首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP系统守护进程PCNTL错误..。但是PCNTL已经安装了

PHP系统守护进程PCNTL错误..。但是PCNTL已经安装了
EN

Stack Overflow用户
提问于 2014-07-24 16:56:46
回答 1查看 338关注 0票数 0

我已经接管了一个项目,我试图让它在我的server....though上工作,我的系统守护进程(下面的代码)似乎有以下问题

我安装了pcntl:

代码语言:javascript
复制
php -i |grep pcnt
pcntl
pcntl support => enabled

所以不知道为什么我会犯这个错误。有人能看到我做错了什么吗?

如有任何建议,将不胜感激!

谢谢!

queue.php (浏览器)

代码语言:javascript
复制
#!/usr/bin/php -q 

Fatal error: Uncaught System_Daemon_Exception:

PHP is compiled without --enable-pcntl directive in 
/home/***/public_html/videoenc/scripts/tools/videoserver/queue.php on line 66 

Exception trace # Function Location 0 System_Daemon::start()
/home/***/public_html/videoenc/scripts/tools/videoserver/queue.php:66 

1 {main

thrown in /usr/local/lib/php/System/Daemon.php on line 551

queue.php (代码)

代码语言:javascript
复制
#!/usr/bin/php -q

<? @set_time_limit(0);

define("DB_FORCE_USE_RW_SERVER", 1);

require_once(realpath(dirname(__FILE__) . "/../../common.inc.php"));

require_once "System/Daemon.php";

// Allowed arguments and their defaults
$runmode = array(
    'no-daemon' => false,
    'help' => false,
    'write-initd' => false,
);

if(gettype($argv) != 'NULL')
{
    foreach ($argv as $k => $arg)
    {
        if (substr($arg, 0, 2) == '--' && isset($runmode[substr($arg, 2)]))
            $runmode[substr($arg, 2)] = true;
    }


}

// Help mode. Shows allowed arguments.
if ($runmode['help'] == true)
{
    echo 'Usage: ' . $argv[0] . "' [runmode]\n";
    echo "Available runmodes:\n";

    foreach ($runmode as $runmod => $val)
    {
       echo ' --'. $runmod . "\n";
    }

    die();
}

// Setup
$options = array(
    'appName' => 'videoenc-queue',
    'appDir' => dirname(__FILE__),
    'appDescription' => 'Manages the video encoding queue.',
    'authorName' => 'Dave',
    'authorEmail' => 'dave@***',
    'sysMaxExecutionTime' => '0',
    'sysMaxInputTime' => '0',
    'sysMemoryLimit' => '1024M',
    'appRunAsGID' => 2000,
    'appRunAsUID' => 2000,
    'appPidLocation' => '/home/***/public_html/videoenc/daemon/run/videoenc-queue/videoenc-queue.pid',
    'logLocation' => '/home/***/public_html/videoenc/daemon/log/videoenc-queue.log'
);

System_Daemon::setOptions($options);

// This program can also be run in the foreground with runmode --no-daemon

if (!$runmode['no-daemon'])
{
    // Spawn Daemon
    System_Daemon::start();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 18:36:42

System_Daemon包只能在命令行脚本中使用。它不能在从web服务器运行的脚本中使用,这似乎就是您在这里尝试使用它的方式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24939717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档