Могу ли я установить приоритет запуска скрипта php в режиме CLI через настройку в файле ini или непосредственно из скрипта? - PullRequest
3 голосов
/ 14 ноября 2010

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

Я хочу установить приоритет простоя из скрипта. Мне не нужно, чтобы он был на 100% быстрым.

Ответы [ 3 ]

2 голосов
/ 14 ноября 2010

В командной строке Windows у вас есть несколько параметров:

start /b /low program.exe
start /b /high program.exe
start /b /realtime program.exe
start /b /normal program.exe
start /b /abovenormal program.exe
start /b /belownormal program.exe
1 голос
/ 14 марта 2014

Ответ, предложенный @stillstanding, полностью действителен. Я просто хотел добавить некоторые детали из моих собственных экспериментов.

Если ваш скрипт использует 50% ЦП, добавив /low, он не будет потреблять меньше. Единственное отличие состоит в том, что появляется другой процесс с более высоким приоритетом планирования, которому требуется процессор. Когда загрузка ЦП достигнет 99-100%, ваш PHP-скрипт CLI будет уменьшен.

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

Добавление start к командам, которые запускались непосредственно с exec(), может вызвать проблемы при использовании путей и параметров. Также у меня возникла проблема с запуском процессов при 0% загрузки процессора.

Вот рабочий пример:

$cmd = 'start /b /low /d "C:\php\" php.exe -f ""C:\Data\www\script.php" foo="1" bar="text"';
pclose(popen($command, "r"));
0 голосов
/ 14 ноября 2010

Собственно, в PHP есть функция pcntl_setpriority (). Однако это только для Unix.

для Windows; эта программа командной строки позволяет изменить приоритет уже запущенных процессов: http://gilchrist.ca/jeff/SetPriority/index.html

Вы можете выполнить exec () в своем PHP-скрипте, чтобы вызвать эту программу, возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...