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

歡迎訪問 生活随笔!

生活随笔

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

php

PHp批量推送数据太慢,PHP非阻塞批量推送数据-php教程

發布時間:2025/3/21 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHp批量推送数据太慢,PHP非阻塞批量推送数据-php教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

明天看到論壇外面有人問如PHP何批量非梗阻向效勞器推送數據,這里大略總結下。

相干保舉:《PHP教程》

一、最簡略的方法:

一個劇本同時跑屢次,用參數來跑指定范疇。如果要推送10000用戶,能夠每一100個用戶運轉一個劇本(劇本邏輯就是輪回遍歷100個用戶,串行的發送數據,代碼略),而且多個(100)劇本同時運轉。

相似:

php task.php 1 100 &

php task.php 101 200 &

php task.php 201 300 &

........

當然這個辦法沒有長短梗阻的,然而能夠批量操作,年夜年夜放慢解決速率。

二、費事點的:假如想要非梗阻而且是HTTP協定的話

能夠用上面的代碼

// 創立一對cURL資本

$ch1 = curl_init();

$ch2 = curl_init();

// 設置URL以及相應的選項

curl_setopt($ch1, CURLOPT_URL, "http://百度.com/");

curl_setopt($ch1, CURLOPT_HEADER, 0);

curl_setopt($ch2, CURLOPT_URL, "http://百度.com/");

curl_setopt($ch2, CURLOPT_HEADER, 0);

// 創立批解決cURL句柄

$mh = curl_multi_init();

// 添加2個句柄

curl_multi_add_handle($mh,$ch1);

curl_multi_add_handle($mh,$ch2);

$active = null;

// 執行批解決句柄

do {

$mrc = curl_multi_exec($mh, $active);

} while ($mrc == CURLM_CALL_MULTI_PERFORM);

// 輪詢Server前往的后果

while ($active && $mrc == CURLM_OK) {

if (curl_multi_select($mh) != -1) {

do {

$mrc = curl_multi_exec($mh, $active);

} while ($mrc == CURLM_CALL_MULTI_PERFORM);

}

}

// 匯總后果......

// 封閉全副句柄

curl_multi_remove_handle($mh, $ch1);

curl_multi_remove_handle($mh, $ch2);

curl_multi_close($mh);

三、非梗阻,而且沒有是HTTP協定的話,需求應用php的socket + stream_select

// uid數組,每一個uid發送一個鏈接

$uids = array(1,2,3,4,5,6);

// 保留socket的數組

$sockets = array();

// 批量創立鏈接并發送數據

foreach($uids as $uid)

{

// tcp://百度.com 改為你要拜訪的ip或許域名

if(!$socket = stream_socket_client("tcp://百度.com:80", $errno, $errstr))

{

echo "$errstr\n";

continue;

}

// 依據本人的協定向效勞端寫入數據,這里模仿HTTP協定

fwrite($socket, "GET / HTTP/1.1\r\nHost: www.百度.com\r\n\r\n");

// 設置成非梗阻

stream_set_blocking($socket, 0);

// 記載數組

$sockets[(int)$socket] = $socket;

}

// 批量期待數據前往

while(count($sockets)>0)

{

$read = $sockets;

$write = $e = array();

// 期待數據可讀

if(stream_select($read, $write, $e, 10))

{

// 輪回讀數據

foreach($read as $socket)

{

// 這里是效勞端前往的數據,需求的話能夠輪回讀

echo fread($socket, 8192);

// 數據讀取終了封閉鏈接,并刪除了鏈接

fclose($socket);

unset($sockets[(int)$socket]);

}

}

}

以上就是PHP非梗阻批量推送數據的具體內容,更多請存眷資源魔其它相干文章!

本網站(www.ziyuanmo.com)刊載的所有內容,包括文字、圖片、音頻、視頻、軟件、程序、以及網頁版式設計等均由用戶發表。

虛擬收費資源付款后概不退款,請考慮在三后支付!如有侵權可聯系郵箱:ziyuanmo@admin.com,會在第一時間解決!

資源貓 ? PHP非阻塞批量推送數據-php教程

分享到:

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的PHp批量推送数据太慢,PHP非阻塞批量推送数据-php教程的全部內容,希望文章能夠幫你解決所遇到的問題。

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