• Какую ОС лучше использовать для веб-программиста?

    kompi
    @kompi
    nullstack devoops
    Если стэк ПО мелкософта, то win.
    Если хочется быть модным и ленивым, то - mac os.
    Если хочется ковырятся и затачивать окружения под себя, тогда линукс.
    И не забываем про важный аспект, который влияет на выбор os, - специфичный софт а-ля фотошоп.
    Ответ написан
    Комментировать
  • Какую ОС лучше использовать для веб-программиста?

    используй ту ось на которой тебе комфортно работать , ты ее знаешь как она работает и есть все инструменты для твоей работы
    Ответ написан
    Комментировать
  • Как реализовать ресайз изображений на лету средствами php?

    @kaasius
    Это можно решить на уровне nginx c помощью try_files и X-Accel-Redirect, вообще без кеша.
    Например, так:
    location <локейшен с картинками>{
        try_files $uri @resize;
    }
    location @resize {
        proxy_pass http://<адрес ресайзера с параметрами>;
    }
    location /notexist.gif {
        root /path/to/notexist/folder;
    }


    Тогда энджи сначала попытается найти файл (ресайзер должен его сохранить там перед отдачей), если не найдет - попробовать отресайзить (запустится ресайзер, который, напомню, должен сохранить картинку на диск перед отдачей), а если ресайзер не нашел исходную картинку - ему надо вернуть X-Aссel-Redirect заголовок с uri /notexist.gif

    Подробнее про X-Accel можно почитать тут wiki.nginx.org/X-accel

    Использовать же для этого кеширование энджи - неправильный путь, ибо вы получите недетерминированный результат.
    Ответ написан
    Комментировать
  • Какой выбрать диспетчер очередей?

    Sardar
    @Sardar
    Вам подойдет RabbitMQ. Хотя "возможность ставить задачу на паузу" это требование не к диспетчеру сообщений, как и "Склейка одинаковых задач". Для выполнения первого условия можно использовать в логике задачи любой конфигуратор, тот же ZooKeeper. Смысл в проверке конфига и уведомлениях, если опция "пауза задачи Х" выставлена, то всем отписаться от очереди. Второе решается в логике задачи - выполнить всю работу по первому уведомлению, игнорируя все остальные.
    Ответ написан
    Комментировать
  • Как создать 2 воркера для gearman job server?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Gearman раздаёт задачи по кругу всем слушателям. Разделить между воркерами можно только по имени вызываемой задачи: один слушает одну, другой – другую. Такой вариант не подходит?
    Ответ написан
    2 комментария
  • Как подключить к сайту на localhost 1млн ботов для теста производительности?

    alternativshik
    @alternativshik
    ab -n 1000 -c 100 -C 'cookie_name=value'  http://localhost/


    n - суммарное количество запросов
    с - количество параллельных запросов
    С - куки для сессии, если вы ее собрались проверять.
    Ответ написан
    Комментировать
  • Есть инструменты тестирования вёрстки сайта во всех браузерах сразу?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    VMware player - бесплатный. Уже настроенные виртуальные машины под него: www.modern.ie/ru/virtualization-tools#downloads

    Туда же можно напихать старых версий ФФ, Опер и прочего.

    Что не говори, а полноценного тестирования на скриншотах не сделаешь. Многие баги могут вываливаться при работе интерактивных, анимированных элементов. А про отладку JS так я вообще молчу.
    Ответ написан
    Комментировать
  • Comet(Long polling) - php + jquery?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    js создает соединение (в опциях для ajax запроса выставляется таймаут побольше)
    php принимает его и смотри что можно послать. И ждет... ждет пока не появятся данные которые можно послать.
    Как только данные появляются (скажем скрипт с какой-то задержкой читает данные из базы или из очереди) то он отправляет эти данные и обрывает соединение.
    js скрипт принимает данные, отдает данные на обработку и создает новое соединение.... и так до бесконечности.

    По сути просто вместо того что бы опрашивать сервер раз в секунду, создается соединение, живущее только до получения данных. После получения данных соединение закрывается. После закрытия соединения (не важно пришли данные или произошла ошибка/разрыв по таймаут) так же создается новое. На практике таймаут выставляют секунд в 20-30 что бы избежать возможных проблем.
    Ответ написан
    5 комментариев
  • Include в конфиге

    @JustStas
    Нативной поддержки инклудов нет, но для этого можно написать конфиг на скриптовом языке, указав нужный интерпретатор.

    Вот пара примеров:
    на баше: http://adw0rd.com/2009/07/23/sphinx-include/#.UdF1R229CUk
    на php: http://sphinxsearch.com/forum/view.html?id=1340

    Вот вообще динамическое формирование конфига на пхп http://www.ivinco.com/blog/scripting-in-sphinx-config/
    Ответ написан
    Комментировать
  • Redis connect возвращает false

    jumpeR
    @jumpeR Автор вопроса
    Наконец-то нашел решение :)
    В httpd/error_log нашел интересную запись:

    [Tue Apr 09 15:42:42 2013] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0

    Выключил SELinux, перезапустил сервак — все заработало.
    Ответ написан
    Комментировать
  • Простейшая очередь задач на PHP?

    Stdit
    @Stdit
    Один из самых простых способов организации фоновых задач (таких как отправка письма, например) — делегировать их скрипту в cron-е через базу данных. То есть записывать задачу с аргументами в таблицу-очередь, а кроном эту очередь разбирать по таймеру. Если по каким-то причинам это не подходит (например, из-за скорости реакции или нагрузки на бд), то наверное смотреть в сторону gearman.
    Ответ написан
    1 комментарий
  • Простейшая очередь задач на PHP?

    EugeneOZ
    @EugeneOZ
    Может быть вот такое будет интересно: github.com/jamm/Tasks
    Ответ написан
    Комментировать
  • PHP и Gearman, что и как?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Пользуясь случаем, хочу еще узнать: если вы имели дело с этой темой, какое из решений вы выбрали для организации выполнения отложенных задач? Я в настоящее время выбираю между RabbitMQ, Gearman и php-resque.

    Gearman — великолепен. Я свой выбор сделал
    Ответ написан
    Комментировать
  • Распараллелить работу части скрипта?

    sajgak
    @sajgak
    Gearman как раз то. Он поддерживает паралельный запуск задач и получение ответа по завершению (aka callback) через методы (doNormal, doHigh, doLow).
    С форками работать сложнее, но тоже можно. Для каждой итерации вы форкаете новый процесс и записываете куда то результат, вопрос только в том, как потом общий результат прочитать. В общем я бы вам посоветовался поближе разобраться с gearman
    Ответ написан
    2 комментария
  • Как лучше хранить много файлов — в базе данных или в виде файлов?

    @edogs
    На самом деле оба варианта по реализации настолько минимально отличаются, что хорошим советом будет «сделайте сейчас оба варианта, используйте сначала файлы, а когда файлов будет много померяете производительность».

    В 99% случаев файлы лучше, т.к. к ним есть прямой и очевидный доступ без всяких баз, а база в любом случае прослойка.

    По бакапам ситуация двоякая, с одной стороны файлы удобнее бакапить тем же инкриментом и обычными файловыми средствами, с другой стороны разовый бакап базы сделать можно сделать просто скопировав файл с таблицей и не надо собирать кучу файлов.

    По скорости/нагрузке, безусловно если это один сервер, то файлы будут побыстрее (только бейте на папки, не пихайте больше 1000 в одну в любом случае), но если у Вас несколько серверов, то отдельный сервак с базой под файлы может иметь определённые преимущества, доступ к базе по сети чуть более очевиден (хотя если у Вас есть админ, то не принципиально).

    Файлы при прочих равных однозначно лучше попадают в кэш, с другой стороны засирание кэша базой проще контроллировать.
    Ответ написан
    1 комментарий
  • Очередь заданий на PHP/MySQL. Пишу очередной костыль?

    @egorinsk
    Самый простой способ — по крону запускаете «надсмотрщика» (supervisor). Надсмотрщик сохраняет свой PID в файл, мемкеш или БД и если видит, что другой надсмотрщик уже запущен — молча умирает.

    Надсмотрщик должен быть предельно прост, чтобы не падать. Обнаружить падение надсмотрщика можно по тому признаку, что файл с PID есть, а процесса с таким PID нет — значит предыдущий надсмотрщик внезапно завершился. Это можно зафиксировать в лог.

    Если надсмотрщик запустился и других надсмотрщиков нет, он берет задания и запускает одного или несколько скриптов-рабочих (worker), каждому раздает по заданию. Если кто-то из рабов успешно завершился, помечаем задачу как выполненную, если умер — он логгирует это и запускает нового, если с N попыток задача так и не сделана, она помечается как невыполнимая и больше не выполняется.
    Ответ написан
    5 комментариев
  • Распределение запросов MySQL

    @edogs
    Стандартное решение в том, что бы иметь тупо 2 разных коннекта.
    Один идет на мастер, второй на слейв. Изменение на первый, чтение со второго.
    Это самое естественное что может быть.

    ну или www.linuxvirtualserver.org/, но это уже немного о другом.
    Ответ написан
    3 комментария
  • SphinxQL и поиск по заданным полям?

    Shedar
    @Shedar
    SELECT * FROM test WHERE MATCH('@title hello @body world')
    Ответ написан
    1 комментарий