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

定時(shí)器不執(zhí)行

劉佳
<?php
    use \GatewayWorker\Lib\Gateway;
    use \GatewayWorker\Lib\Db;
    use Workerman\Lib\Timer;
    use Workerman\Worker;

    $task = new Worker();
    $task->name = 'task';
    // 開(kāi)啟多少個(gè)進(jìn)程運(yùn)行定時(shí)任務(wù),注意多進(jìn)程并發(fā)問(wèn)題
    $task->count = 2;
    $task->onWorkerStart = function($task)
    {

        Timer::add(3, function()
        {
            echo 'close';
            $port = ****;
            $ip = "**_.**_.**_.**_";
            $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
            socket_close($socket);

        });
        getdata();
    };
    function getdata()
    {
        error_reporting(E_ALL);
        set_time_limit(0);
        $port = ****;
            $ip = "**_.**_.**_.**_";
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($socket < 0) {
            echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
        }else {
            echo "OK.\n";
        }
        $result = socket_connect($socket, $ip, $port);
        if ($result < 0) {
            echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
        }else {
            echo "連接OK\n";
        }
        $sendStr = "24 40 24 40 00 01 01";
        $sendStrArray = str_split(str_replace(' ', '', $sendStr), 2);  // 將16進(jìn)制數(shù)據(jù)轉(zhuǎn)換成兩個(gè)一組的數(shù)組
        $s1="";
        for ($j = 0; $j < count($sendStrArray); $j++) {
            $s1.=chr(hexdec($sendStrArray));
        }
        socket_write($socket, $s1);
        $receiveStr = "";
        while($receiveStr = socket_read($socket, 8192)) {
            $receiveStrHex = bin2hex($receiveStr);  // 將2進(jìn)制數(shù)據(jù)轉(zhuǎn)換成16進(jìn)制
            $param=analysis($receiveStrHex);
            if(!empty($param)){
                $info=Db::instance('zhongjianjian')->row("select id from ly_bus where busid=".$param);

                if($info>0){
                    Db::instance('zhongjianjian')->update('ly_bus')->cols($param)->where("id=".$info)->query();
                    //echo $param;
                }else{

                    $s=Db::instance('zhongjianjian')->insert("ly_bus")->cols($param)->query();
                    //echo $param;
                }
            }
        }
        sleep(60);
        echo date('Y-m-d H:i:s').'reload/n';
        getdata();
    }

如果在onWorkerStart 里邊只設(shè)置定時(shí)器,定時(shí)器能正常執(zhí)行 加上了getdata()方法定時(shí)器就不執(zhí)行了 是因?yàn)橹婚_(kāi)了一個(gè)進(jìn)程嗎

5107 2 0
2個(gè)回答

stephen

你的 getdata 沒(méi)有在 Timer::add 的匿名函數(shù)里面,而是加在 onWorkerStart 里,怎么會(huì)執(zhí)行

  • 劉佳 2017-09-06

    getdata()執(zhí)行了啊 定時(shí)器不執(zhí)行

  • stephen 2017-09-06

    @2552: 在getdata里面調(diào)用getdata,阻塞了,單獨(dú)起一個(gè)進(jìn)程吧

智佳思遠(yuǎn)

定時(shí)器是在當(dāng)前進(jìn)程執(zhí)行的,你的定時(shí)器里調(diào)用getdata(),getdata()里又調(diào)用getdata(),死循環(huán)了。當(dāng)前進(jìn)程被你死循環(huán)了,所以其它代碼包括workerman的定時(shí)器無(wú)法被執(zhí)行到。

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??