日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

swoole会合并到php吗,thinkphp整合swoole

發布時間:2023/12/4 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swoole会合并到php吗,thinkphp整合swoole 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

cli模式下執行thinkphp

1、cd 項目根目錄

2、php index.php admin/index/index --執行 模塊/控制器/方法名

異步消息隊列

1、服務器端核心代碼

/**

* 腳本任務系統

*/

public function server()

{

$serv = new \swoole_server("0.0.0.0", 8082);

//日志會記錄你錯誤的數據

$serv->set(array('task_worker_num' => 20, 'log_file' => './swoole.log'));

$serv->on('Receive', function ($serv, $fd, $from_id, $data) {

$task_id = $serv->task($data);

});

//執行任務模塊

$serv->on('Task', function ($serv, $task_id, $from_id, $data) {

//1秒執行一次

$num = 0;

$timer_id = $serv->tick(1000, function ($id) use ($serv,$data,$num) {

$url = "http://notify.yingxiaom.top/index.php/admin/index/test";

$result = $this->request_post($url);

if($result == 'SUCCESS'){

echo "1";

file_put_contents("b.txt","1",FILE_APPEND);

$serv->clearTimer($id);

}

});

//10秒后銷毀

$serv->after(1000*60*2, function () use ($serv,$timer_id) {

$serv->clearTimer($timer_id);

});

$serv->finish($data);

});

//任務結束

$serv->on('Finish', function ($serv, $task_id, $data) {

echo "AsyncTask[$task_id] Finish: $data" . PHP_EOL;

});

$serv->start();

}

/* author@zhou

* 功能:發送數據

* return

*/

public function request_post($url ='',$param ='') {

$postUrl = $url;

$curlPost = $param;

$ch = curl_init();//初始化curl

curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定網頁

curl_setopt($ch, CURLOPT_HEADER, 0);//設置header

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字符串且輸出到屏幕上

curl_setopt($ch, CURLOPT_POST, 1);//post提交方式

curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8','Content-Length: ' . strlen($curlPost)));

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);

$data = curl_exec($ch);//運行curl

// var_dump(curl_errno($ch));die;

curl_close($ch);

return $data;

}

2、客戶端代碼

/**

* description:客戶端

*/

public function client()

{

$phone = I("phone");

$client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);

$ret = $client->connect("127.0.0.1", 8082);

if(empty($ret)){

echo 'error!connect to swoole_server failed';

} else {

if($phone){

$client->send($phone);//手機號

}

echo "SUCCESS";

}

}

3、注意事項

定時任務執行接口請求時返回 SUCCESS 清除定時

定時器會在單位時間內統一清除

worker_num 默認為cpu核數 (1-4倍最合理)

task_worker_num設置 每秒最大請求數 * 單個任務耗時(單位s) / worker_num

單個task的處理耗時,如100ms,那一個進程1秒就可以處理1/0.1=10個task

task投遞的速度,如每秒產生2000個task

2000/10=200,需要設置task_worker_num => 200,啟用200個task進程

通用傳參方式:

格式 :function () use ($param1,$param2)

$serv->after(1000*60*2, function () use ($serv,$timer_id) {

$serv->clearTimer($timer_id);

});

總結

以上是生活随笔為你收集整理的swoole会合并到php吗,thinkphp整合swoole的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。