Можно ли оптимизировать PHP-скрипт для ограничения влияния на память сервера и ЦП? - PullRequest
1 голос
/ 30 августа 2011

У меня на сервере запущен PHP-скрипт через cronjob. Работа выполняется каждую минуту. В сценарии php у меня есть цикл, который выполняется, затем ждет один sevond и цикл снова. По сути, создание сценария для запуска раз в секунду.

Теперь мне интересно, если я заставлю cronjob запускаться только один раз в час и оставлю скрипт по-прежнему в цикле целый час или, возможно, целый день ... Повлияет ли это на процессор и / или память сервера, и итак, будет ли он положительным или отрицательным?

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Я замечаю недостаток дизайна.

У вас всегда может быть PHP-скрипт, постоянно работающий в цикле и выполняющий любые необходимые вам функции, независимо от веб-сервера или клиентов.

Вы, очевидно,проверяя что-то с помощью этого скрипта, кто-нибудь провоцирует что?Там могут быть лучшие решения для вас.Например, если это база данных, рассмотрите триггеры SQL.

0 голосов
/ 31 августа 2011

Я думаю, что вам следует изменить логику скрипта, если это возможно.

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

В противном случае ваше решение в порядке.Может произойти утечка памяти, но в новых версиях PHP (5.3.x) сборщик мусора довольно хорош.Некоторые расширения могут привести к утечке памяти.Или дизайн вашего приложения может привести к чрезмерному использованию памяти (например, кеширование загруженных объектов Doctrine ORM).Но вы можете контролировать использование памяти сценариев с помощью таких инструментов, как monit и перезапускать сценарий, когда предел mempry достигает некоторой точки, или запускать сценарий снова, когда ваш сценарий неожиданно завершает работу.

0 голосов
/ 30 августа 2011

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

Другое дело, если время выполнения скрипта истекает, происходит сбой, происходит сбой по любой причине, из-за которой вы не запускаете скрипт максимум один час.Будет ли иметь положительное влияние на нагрузку на сервер, но не то, что вы ищете, я думаю?:)

может быть, запускать его каждые 2 или даже 5 минут, чтобы сэкономить нагрузку на сервер?

ИЛИ может изменить скрипт, чтобы он не ждал, а просто выполнялся один раз и вызывал его из задания cron.должен положительно влиять на нагрузку на сервер.

...