国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

執(zhí)行redis命令的時候報了一堆錯誤。。不明白是什么原因。。

dayayz

RT,源碼大體是這樣,

   $redis = new Redis();
   $redis->connect('127.0.0.1', 6379);
  if($redis) {echo "Connection to server sucessfully\n";}
   //check whether server is running or not
   echo "Server is running: ".$redis->ping()."\n";
   echo $redis->get("data1")."\n"; 

$task1 = new Worker();
$task1->name = 'device1';
$task1->onWorkerStart = function($task)
{
    $time_interval = 3;
    Timer::add($time_interval, function()
    {
    echo $redis->get("data1"); 
     });
};

CMD里提示的內(nèi)容是這樣,

G:\workerman-for-win-master\workerman-for-win-master>php Applications\example\device1.php
Connection to server sucessfully
Server is running: +PONG
1000
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.5          PHP version:7.0.3
------------------------ WORKERS -------------------------------
worker        listen        processes status
device1       none           1        
-----------------------------------------------------------------------
Press Ctrl-C to quit. Start success.
PHP Notice:  Undefined variable: redis in G:\workerman-for-win-master\workerman-for-win-master\Applications\example\device1.php on line 27

Notice: Undefined variable: redis in G:\workerman-for-win-master\workerman-for-win-master\Applications\example\device1.php on line 27
PHP Fatal error:  Uncaught Error: Call to a member function get() on unknown in G:\workerman-for-win-master\workerman-for-win-master\Applications\example\device1.php:27
Stack trace:
#0 : {closure}()
#1 G:\workerman-for-win-master\workerman-for-win-master\Events\Select.php(187): call_user_func_array(Object(Closure), Array)
#2 G:\workerman-for-win-master\workerman-for-win-master\Events\Select.php(226): Workerman\Events\Select->tick()
#3 G:\workerman-for-win-master\workerman-for-win-master\Worker.php(740): Workerman\Events\Select->loop()
#4 G:\workerman-for-win-master\workerman-for-win-master\Worker.php(428): Workerman\Worker->run()
#5 G:\workerman-for-win-master\workerman-for-win-master\Worker.php(345): Workerman\Worker::runAllWorkers()
#6 G:\workerman-for-win-master\workerman-for-win-master\Applications\example\device1.php(32): Workerman\Worker::runAll()
#7 {main}
  thrown in G:\workerman-for-win-master\workerman-for-win-master\Applications\example\device1.php on line 27

查了一下相關(guān)的問題,感覺也不像CLI類加載失敗的情況,畢竟在Worker上面的內(nèi)容都正常,連接redis也正常,到了worker的timer里就出問題了。。
求解答。。。

5254 1 0
1個回答

walkor 打賞

定時器內(nèi)的$redis變量是函數(shù)外部定義的變量,函數(shù)內(nèi)部無法直接使用。需要global關(guān)鍵字引用。這個是php基礎(chǔ)知識哦。

另外workerman不允許在主進(jìn)程初始化資源(這個手冊有明確說明哦),可以把new redis放到onWorkerStart中去。

  • dayayz 2016-04-05

    。。。感謝大大的回復(fù)。。
    global也能引用外部對象的方法嗎?。。我試著在timer里面加上global了,還是提示錯誤。。

  • dayayz 2016-04-05

    @931:感謝大大。。自行解決了。。。加了use($redis)就好了、。。。謝謝!

年代過于久遠(yuǎn),無法發(fā)表回答
??