在做大量發送郵件的操作,要取得發送結果,所以需要等待請求結果。
php有沒有辦法非同步請求接口,然後取得數據,再執行回調函數?
現在是同步請求接口,然後等待,很慢。 。而且執行的時候伺服器cpu會升高。 。
求大神賜教
現在的重點是不想等待請求的返回,因為很慢,等有返回的時候直接調用某段程式碼。 。 redis隊列什麼的已經在用了,也是腳本在執行
php安裝多執行緒擴充。自己擴展即可達到,js也是單線程實現的。
可以嘗試使用reactphp,workerman,swoole這些函式庫來執行非同步任務
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接口,完成發送。也相當於就是異步了。
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接口,完成發送。也相當於就是異步了。