Как вы ограничиваете количество людей, выполняющих PHP-скрипт одновременно? (Очередь, спотовая система) - PullRequest
3 голосов
/ 25 января 2012

У меня есть готовая система загрузки, однако я могу столкнуться с очень высокой нагрузкой, которая может привести к отключению наших серверов. Хостинг-провайдер ограничивает количество одновременно запускаемых сценариев PHP примерно до 30. Однако, когда люди загружают, им часто требуется больше времени, чем ожидалось, чтобы завершить сценарий, а другим людям выдается «Внутренняя ошибка сервера», пока спот не освобождается. вверх.

Мой конкретный вопрос: есть ли способ ограничить количество людей, одновременно запускающих скрипт? Например, система очередей, в которую одновременно загружаются только 29 человек (сервер работает), а другие могут начинать загрузку только после освобождения мест. Как это возможно?

Ответы [ 2 ]

4 голосов
/ 25 января 2012

Сохраните значение (в идеале в Memcache, но MySQL тоже работает отлично), которое говорит, сколько людей загружают.Он начинается с нуля, затем, когда кто-то начинает загрузку, вы увеличиваете его, прежде чем начинать обрабатывать загрузку.Когда загрузка завершится, уменьшите счетчик еще раз.

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

Либо найдите хост случшие системы.Я надеюсь, что это не считается рекламой, но хост, которым я пользуюсь , предоставляет гораздо, НАМНОГО лучше системы и почти наверняка дешевле, чем то, что вы платите своему нынешнему хосту.

1 голос
/ 25 января 2012

Вы уверены, что они не ограничили количество процессов apache или php?Если они это сделали, вы мало что можете сделать, но попросите их увеличить лимит.Если это действительно ограничение для одновременного выполнения одного PHP-скрипта, то вы можете обойти его, как показано ниже ...

Есть много скриптов, которые делают одно и то же.Они могут быть символическими ссылками на один «управляющий» скрипт, так что их содержание всегда одинаково.Затем выберите один из сценариев наугад при представлении формы.

...