在做大量發(fā)送郵件的操作,要取得發(fā)送結(jié)果,所以需要等待請求結(jié)果。
php有沒有辦法非同步請求接口,然後取得數(shù)據(jù),再執(zhí)行回調(diào)函數(shù)?
現(xiàn)在是同步請求接口,然後等待,很慢。 。而且執(zhí)行的時候伺服器cpu會升高。 。
求大神賜教
現(xiàn)在的重點是不想等待請求的返回,因為很慢,等有返回的時候直接調(diào)用某段程式碼。 。 redis隊列什麼的已經(jīng)在用了,也是腳本在執(zhí)行
強烈推薦你使用workerman,如果使用了fsockopen,這個只是講異步發(fā)出去了,但是並沒有返回回來!如果你要異步處理,就用workerman.當然swoole也可以的,但是呢,這個有C語言的,有些報錯訊息是C的。你會C你也可以用這個。 workerman入門特簡單。具體的實作邏輯如下:
當你需要異步的時候,你直接調(diào)用workerman,來執(zhí)行你的邏輯,這個workerman這裡是同步執(zhí)行的,
workerman執(zhí)行邏輯過後,通過異步的方式來調(diào)用task任務,這個是workerman的異步。 workerman直接返回。
當你的task任務搞定了過後,就講傳遞到workerman中,在由workerman來執(zhí)行你異步之後的邏輯。
給你一個備份裡面有PHP非同步通訊的框架
github-php-awesome 翻譯過後的
1.把需要傳送的資訊存到Redis或其他記憶體快取裡面。
2.php提供一個需要存取密鑰token的接口,這個接口便是循環(huán)的讀取緩存redis裡面得郵件數(shù)據(jù),去發(fā)送。
3.使用定時任務windows和linux均有方案,定時去http請求這個php接口,完成發(fā)送。也相當於就是異步了。