經(jīng)過測試,http/client 每連接一次計時器數(shù)量加一,時間長了CPU占用老高了。
public function __construct($option = [])
{
$this->_option = $this->_option = array_merge($this->_option, $option);
// Timer::add(1, [$this, 'closeTimeoutConnection']);
// var_dump();
}
注頭釋掉線程池里面的定時器這一行,定時器不再增加,但是不知道線程池是不是沒有了?
打算再改一改,到closeTimeoutConnection,里面close 連接的時候unset定時器不知道哪個比較科學。
$inner_http_worker1 = new Worker('http://0.0.0.0:2122');
// 當http客戶端發(fā)來數(shù)據(jù)時觸發(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();
//比方說這段代碼,我多次的post url 和數(shù)據(jù),讓httpclient去取結果,我沒編過程,沒參考代碼我就不知道怎么弄了。
改好了,今天去服務器上更新一下。
昨天下午注釋掉了定時器那行,在生產(chǎn)中運行,今天去應該程序還沒什么問題??戳硕〞r器的用法,才明白定時器那行是每秒去做一次超時連接斷開。
在 onWorkerStart 回調中實例化 http/Client