<?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)程嗎
定時(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í)行到。