Не удается выполнить PHP-скрипт с использованием php exec () (в magento) - PullRequest
1 голос
/ 17 сентября 2011

Я хочу, чтобы какой-нибудь php-скрипт запускался в фоновом режиме.Для этого у меня есть специальный метод в моем классе

protected function _runSpider()
{
    $php = exec('which php');
    $result = exec($php . ' ' . Mage::getBaseDir() . '/spider.php > ' . Mage::getBaseDir() . '/var/log/out.log 2>&1 &');
    Mage::log($result);
}

, который должен выполнить что-то вроде этого

/usr/bin/php /home/www/spider.php > home/www/var/log/out.log 2>&1 &

Но в результате, как я думаю, скрипт не выполняется, журнал magento пуст иout.log файл пуст.

1 Ответ

1 голос
/ 17 сентября 2011

Может

protected function _runSpider()
    {
        $command = '$(which php) ' . Mage::getBaseDir() . '/spider.php > ' . Mage::getBaseDir() . '/var/log/out.log');
        $result = exec($command);
        Mage::log($result);
    } 

Удаление последнего & заблокирует выполнение скрипта вместо передачи управления обратно интерпретатору. И поскольку вы выводите весь вывод в файл, возможно, вам не нужно передавать вывод в null.

Кстати, команда оболочки, которую вы смонтировали, не вернет никаких данных, так как вы все передаете в файл или / dev / null. Если вам нужно вернуться к $result var, удалите часть кода > filename, хотя exec только выдаст вам последнюю строку результата , и вам может понадобиться passthru ( ) или добавьте $output var для сохранения каждой строки в массиве в функции exec.

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