Crone и PHP

WebByte

Проходящий мимо
Crone и PHP

Некий скрипт должен запускаться кроном раз в две минуты.
В процессе запуска скрипт вызывает exec("ps ax") для определения числа параллельно запущенных копий и если их число больше допустимого, должен завершаться.

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

Если скрипт запустить руками, то все идет строго по сценарию - либо умирает, либо пишет лог и работает.

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

Вопрос. Почему так?
 

WebByte

Проходящий мимо
Да нет вроде. В списке процесс висит под тем же пользователем, под которым захожу на сервер.
 

Tor

Новичок
1) как организовано "умирание"?
2) строка из кронтаба?
 

WebByte

Проходящий мимо
1.
Что-то вроде
--
PHP:
if ($threadCount>2) exit;
else{
   MakeLog(mktime());
   DoWork();
}
Из шела либо не срабатывает ветка, либо выполянется и MakeLog и DoWork
Из крона ветка срабатывает всегда и выполняется только DoWork

2.

*/2 * * * * /usr/local/bin/php /home/www/crone.php > /dev/null
 

Tor

Новичок
решаем первую проблему - неопределение $threadCount

ты делаешь exec/system/`` ps
так?

сделай сразу var_dump/print_r после этого вызова

крон измени на

/usr/local/bin/php /home/www/crone.php > /tmp/crone.log
 

WebByte

Проходящий мимо
Сделал.
print_r показал, что строки в результате работы exec("ps ax") режутся.. Соотвественно, скрипт просто не видит своих копий, потому как их имена обрезаются.
 

Tor

Новичок
ну вот, видишь, как все просто оказалось

вторую проблему сам решишь?
 
Сверху