dpwbc42604 2011-09-17 14:37
浏览 13
已采纳

无法使用php exec()执行PHP脚本(在magento中)

I want some php script to be launching in a background proccess. For this i have a special method in my class

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);
}

this should execute something like this

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

But in result as i think script is not executing, magento log is empty and out.log file is empty.

  • 写回答

1条回答 默认 最新

  • drwurqczo39355510 2011-09-17 15:11
    关注

    Maybe

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

    Removing the last & will lock execution of the script instead of passing control back to the interpreter. And since you're piping all of the output to a file, maybe you don't need to pipe the output to null.

    By the way, the shell command you mounted won't return any data as you're piping everything to a file or /dev/null. If you need it back to the $result var, remove the > filename part of the code, though exec will only give you the last line of the result and you may need the passthru() function or add an $output var to store every line to an array on the exec function.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色
  • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
  • ¥15 字符串比较代码的漏洞
  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?