CasperJS зависает при вызове из конкретного PHP Gearman Init

Мне нужно запустить скрипт casperJS для запуска из Gearman через PHP. Все прекрасно работает, когда я запускаю работника Gearman из CLI. Но если я автоматически запусту рабочий Gearman через что-то вроде супервизора, casperJS приведет к бесконечному зависанию PhantomJS на 99% ЦП. Даже простая ‘casperjs —version’ приведет к зависанию PhantomJS — но только при запуске из любого места, кроме CLI, вот так: /usr/bin/php /var/www/xmweb/gearman_client_tests/casperTest.php Все это происходит на бродячей виртуальной машине под управлением Debian Wheezy.

Я ищу где-нибудь, чтобы выяснить, почему PHP / Gearmans порождение casperJS будет работать только при вызове из CLI; почему полное зависание фантома в противном случае? Если бы это были права доступа или среда, почему бы «phantomjs —version» работать, а не «casperjs —version»?

<?php
/**
* The Gearman Worker script
*/
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("LayoutbooksAssembler", "sendToCasper");
while ($worker->work());

function sendToCasper($job) {
echo "whoami you ask? ";
$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
echo "!\r\n\r\n";
$jobParams = (array) json_decode($job->workload());
exec("phantomjs --version",$output);
var_dump($output); //got the phantomjs version (2.1)

//everything thus far is rendered to screen or logged just finewhen worker is initiated via CLI *or* supervisord
//but if started from supervisord, the casperjs process below hangs (phantomjs takes 99% CPU until killed) and nothing in a casper script runs
exec("casperjs --version",$moreOutput)
var_dump($moreOutput); //will never get here if gearman worker is started from anything but CLI

}

supervisord.conf:

[program:casperWorker]
command=/usr/bin/php /var/www/xmweb/gearman_client_tests/casperTest.php
process_name=casperWorker
numprocs=1
user=vagrant
environment=GEARMAN_USER="vagrant"stopsignal=KILL
autostart=true
autorestart=true
stdout_logfile=/home/vagrant/gearmanLogs/casper.log
stderr_logfile=/home/vagrant/gearmanLogs/casper_errors.log

Это работает нормально, если вызывается через прямой URL (noProb.php):

<?php
exec("casperjs --version",$newOutput);
var_dump($newOutput);

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]