非同步請求 - php有辦法做類似js的非同步post嗎? fsockopen沒有辦法取得請求結果
过去多啦不再A梦
过去多啦不再A梦 2017-05-27 17:42:08
0
5
794

在做大量發送郵件的操作,要取得發送結果,所以需要等待請求結果。

php有沒有辦法非同步請求接口,然後取得數據,再執行回調函數?

現在是同步請求接口,然後等待,很慢。 。而且執行的時候伺服器cpu會升高。 。

求大神賜教

現在的重點是不想等待請求的返回,因為很慢,等有返回的時候直接調用某段程式碼。 。 redis隊列什麼的已經在用了,也是腳本在執行

过去多啦不再A梦
过去多啦不再A梦

全部回覆(5)
小葫芦

php安裝多執行緒擴充。自己擴展即可達到,js也是單線程實現的。

伊谢尔伦

可以嘗試使用reactphp,workerman,swoole這些函式庫來執行非同步任務

刘奇

php自帶的curl_multi就可以實現了

左手右手慢动作

強烈推薦你使用workerman,如果使用了fsockopen,這個只是講異步發出去了,但是並沒有返回回來!如果你要異步處理,就用workerman.當然swoole也可以的,但是呢,這個有C語言的,有些報錯訊息是C的。你會C你也可以用這個。 workerman入門特簡單。具體的實作邏輯如下:
當你需要異步的時候,你直接調用workerman,來執行你的邏輯,這個workerman這裡是同步執行的,
workerman執行邏輯過後,通過異步的方式來調用task任務,這個是workerman的異步。 workerman直接返回。
當你的task任務搞定了過後,就講傳遞到workerman中,在由workerman來執行你異步之後的邏輯。
給你一個備份裡面有PHP非同步通訊的框架
github-php-awesome 翻譯過後的

仅有的幸福

隊列

1.把需要傳送的資訊存到Redis或其他記憶體快取裡面。

2.php提供一個需要存取密鑰token的接口,這個接口便是循環的讀取緩存redis裡面得郵件數據,去發送。

3.使用定時任務windows和linux均有方案,定時去http請求這個php接口,完成發送。也相當於就是異步了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板