2011-09-15 1 views
10

Ho installato gearman su Ubuntu 10.04 di recente e ho installato l'estensione pecl. Ora, quando si esegue un file php nel browser che contiene:Gearman, problema di estensione php: Classe 'GearmanWorker' non trovato in .. utilizzando il terminale ma funziona sul browser

$client = new GearmanWorker(); 
die(var_Dump($client)); 

ottengo object(GearmanWorker)#1 (0) { }

ma quando si esegue il file di un vero e proprio lavoratore terminale (da root), ottengo questo:

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 

Il codice operaio:

#!/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; 
} 

Aiutateci!

+0

Do 'var_dump (get_include_path())' sia in CLI che tramite CGI. Potrebbero differire. – chelmertz

+0

scusate, non capisco cosa intendi, ma sto installando php come un modulo apchae –

+0

in realtà è stato installato usando il pannello virtualmin –

risposta

13

Digitare il php --ini al prompt dei comandi per vedere quale php.ini utilizza la propria CLI PHP. Assicurati che Gearman sia abilitato in quel php.ini.

1
  1. Installare il server di lavoro Gearman e libgearman

    apt-get install Gearman-job-server di libgearman-dev

  2. installare l'estensione PECL

    apt-get install php-pear php5-dev PECL installare Gearman

  3. Aprire il file php.ini corretto e aggiungere extension=gearman.so alla fine.

2

utilizzando locate php.ini nel mio ubuntu laptop Mostra 2 risultati:

/etc/php5/apache2/php.ini 
/etc/php5/cli/php.ini 

aggiungere sia extension=gearman.so in 2 file php.ini quindi riavviare php e gearmand ora di lavoro.