經(jīng)過(guò)測(cè)試,http/client 每連接一次計(jì)時(shí)器數(shù)量加一,時(shí)間長(zhǎng)了CPU占用老高了。
public function __construct($option = [])
{
$this->_option = $this->_option = array_merge($this->_option, $option);
// Timer::add(1, [$this, 'closeTimeoutConnection']);
// var_dump();
}
注頭釋掉線(xiàn)程池里面的定時(shí)器這一行,定時(shí)器不再增加,但是不知道線(xiàn)程池是不是沒(méi)有了?
打算再改一改,到closeTimeoutConnection,里面close 連接的時(shí)候unset定時(shí)器不知道哪個(gè)比較科學(xué)。
$inner_http_worker1 = new Worker('http://0.0.0.0:2122');
// 當(dāng)http客戶(hù)端發(fā)來(lái)數(shù)據(jù)時(shí)觸發(fā)
$inner_http_worker1->onMessage = function($http_connection, $data) {
global $uidConnectionMap,$rfid,$channel;
$_POST = $_POST ? $_POST : $_GET;
$channel = @$_POST['channel'];
$position = @$_POST['position'];
$rfid = @$_POST['rfid'];
//var_dump($_POST);
$post = "{way_code:001,position:".$position.",RfidNo:".$rfid."}";
//$post = '{"way_code":"001","position":"1","RfidNo":"1000000002"}';
// var_dump($post);
$http = new Workerman\Http\Client();
//var_dump($channel);
//$http->post('http://172.50.10.2:7090/facematch/v1/request', $post, function($response) {
$http->post('http://'.$channel.':7090/facematch/v1/request', $post, function($response){
// var_dump($response->getStatusCode());
$data = json_decode($response->getBody(),true);
// var_dump($data);
echo ($response->getBody());
if ($data['Content'] != null && $data['Status'] == 1){
// var_dump($response->getBody());
new passenger($response->getBody(),$GLOBALS['channel']);
}
//global $rfid;
// var_dump($GLOBALS['rfid']);
}, function($exception){
$ident = 'FR2SAC';
new logErr($ident,$exception);
// echo $exception;
});
return $http_connection->send('1');
};`
$inner_http_worker->listen();
//比方說(shuō)這段代碼,我多次的post url 和數(shù)據(jù),讓httpclient去取結(jié)果,我沒(méi)編過(guò)程,沒(méi)參考代碼我就不知道怎么弄了。
改好了,今天去服務(wù)器上更新一下。
昨天下午注釋掉了定時(shí)器那行,在生產(chǎn)中運(yùn)行,今天去應(yīng)該程序還沒(méi)什么問(wèn)題??戳硕〞r(shí)器的用法,才明白定時(shí)器那行是每秒去做一次超時(shí)連接斷開(kāi)。
在 onWorkerStart 回調(diào)中實(shí)例化 http/Client