2009-03-18 1 views
9

У меня есть команда «сгенерировать сайт», которая анализирует все таблицы, чтобы перепечатать весь сайт на фиксированные html-страницы. Это тяжелый процесс, по крайней мере, на моей локальной машине (процессор поднимается). На производственном сервере это пока не проблема, но я хотел бы сохранить ее в будущем. Поэтому я рассматриваю возможность использования функции php sleep() между каждым шагом тяжелого сценария, чтобы у сервера было время «перехватить дыхание» между тяжелыми шагами.Использует функцию php sleep() - хорошая идея сохранить нагрузку на процессор с помощью тяжелого сценария?

Это хорошая идея или это будет бесполезно?

ответ

6

Если вы используете php5, и он используется в режиме CGI (вместо режима mod_php), вы можете вместо этого использовать proc_nice.

Это может позволить команде «сгенерировать сайт» использовать столько CPU, сколько захочет, пока никто другой не пытается использовать сайт.

0

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

0

Это зависит от того, сколько раз вы будете называть его и как долго. Вам необходимо сбалансировать свою потребность в быстром выходе и низком использовании ЦП.

Вкратце: да, это поможет.

+0

он будет называться 6 раз, по 3 секунды каждый. Мне вообще не нужен быстрый выход. Я собираюсь запустить его с помощью ajax-вызова, а затем еще один ajaxcall получает статус каждые 19 секунд. он должен только сказать «html-файлы сгенерированы» или вывести журнал, если произошла ошибка. – pixeline

1

я бы просто не сделать это на производственном сервере, шаги, которые я следовал раньше:

  1. Аренда недорогую PHP-сервер - или получить установку сервера надлежащего Dev, который копирует продукцию

  2. Все динамические файлы копируются в DEV - они даже не должны быть на производстве

  3. Запуск сценария HTMLizer - не сон просто сжечь его

  4. Сверяет Ouput, а затем RSYNC это на реальном сервере - резервное копирование которого живой каталог, как вы это делаете, так что вы можете спокойно упасть назад

Все равно, так как Caching/Memcaching подошел к скорости я гавань была сделайте это вообще - используйте Zend Framework и Zend Cache, и у вас в основном есть динамический эквивалент того, что вам нужно делать автоматически.

+0

метод, который вы предлагаете, звучит хорошо. заботиться о разработке РСЮНК? о дзэн: я могу ошибаться (я не знаю zen), но я не могу использовать zend cache, потому что я загружаю эти сгенерированные html-фрагменты через ajax через фиксированное имя файла html. Поэтому мне нужно контролировать точное положение и имя файла html-файлов. – pixeline

+0

RSYNC http://samba.anu.edu.au/rsync/ rsync - это утилита с открытым исходным кодом, которая обеспечивает быструю инкрементную передачу файлов. Zend - это PHP Framework, но есть много классов кэширования, то есть в PEAR. –

0

Основываясь на задаче, я не думаю, что это вам поможет.

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

В этом случае, чтобы выполнить задание как можно скорее, вы можете также опустить команду sleep, тем самым сокращая время задачи и ускоряя время процессора для других процессов.

Некоторые из плакатов выше могут помочь вам оптимизировать код.

Смежные вопросы