Linux Gearman,php 扩展问题:在 .. 中找不到类“GearmanWorker” 使用终端但在浏览器上工作
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7428014/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Gearman , php extension problem : Class 'GearmanWorker' not found in .. using terminal but works on browser
提问by Naughty.Coder
I've installed gearman on ubuntu 10.04 recently and installed it's pecl extension. Now , when I run a php file in the browser that contains :
我最近在 ubuntu 10.04 上安装了 gearman 并安装了它的 pecl 扩展。现在,当我在浏览器中运行包含以下内容的 php 文件时:
$client = new GearmanWorker();
die(var_Dump($client));
I get object(GearmanWorker)#1 (0) { }
我得到 object(GearmanWorker)#1 (0) { }
but when running the a real worker file in terminal (by root) , I get this:
但是当在终端(通过 root)运行一个真正的工作文件时,我得到了这个:
sudo php worker.php
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imagick.ini on line 1 in Unknown on line 0
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
PHP Warning: Module 'pcntl' already loaded in Unknown on line 0
PHP Fatal error: Class 'GearmanWorker' not found in /home/ME/public_html/try/worker.php on line 3
The worker code :
工人代码:
#!/usr/bin/php
<?php $worker= new GearmanWorker();
$worker->addServer('127.0.0.1');
$worker->addFunction("reverse", "reverse_fn");
while (1) {
print "Waiting for job...\n";
$ret = $worker->work();
if ($worker->returnCode() != GEARMAN_SUCCESS)
break;
}
function reverse_fn ($job)
{
$workload = $job->workload();
echo "Received
job: " . $job->handle() . "\n";
echo "Workload: $workload\n";
$result = strrev($workload);
for ($i = 1; $i <= 10; $i ++) {
$job->status($i, 10);
sleep(1);
}
echo "Result: $result\n";
return $result;
}
Please help!
请帮忙!
采纳答案by Gordon
Type php --ini
at your command prompt to see which php.ini your PHP CLI uses. Make sure Gearman is enabled in that php.ini.
输入php --ini
你的命令提示符下,看看哪些php.ini里的PHP CLI使用。确保在该 php.ini 中启用了 Gearman。
回答by RafaSashi
Install the gearman job server and libgearman
apt-get install gearman-job-server libgearman-dev
Install the pecl extension
apt-get install php-pear php5-dev pecl install gearman
Open the correct php.ini file and add
extension=gearman.so
at the end.
安装 gearman 作业服务器和 libgearman
apt-get install gearman-job-server libgearman-dev
安装pecl扩展
apt-get install php-pear php5-dev pecl 安装 gearman
打开正确的 php.ini 文件并
extension=gearman.so
在最后添加。
回答by MrBii
using locate php.ini
in my ubuntu laptop show 2 results:
用locate php.ini
在我的Ubuntu的笔记本电脑显示2分的结果:
/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini
add both extension=gearman.so
into 2 php.ini file
then restart php and gearmand working now.
将两者都添加extension=gearman.so
到 2 个 php.ini 文件中,然后重新启动 php 和 gearmand 工作。