我正在開發一個實時比分網站,我的目標是刷新API請求,每5秒,並對其進行緩存(因爲我只有每1000個請求小時),並每5秒更新一次該網站的部分內容。
的API請求在PHP完成,因此是數據的排序。不過,我一直在努力實現API請求的更新部分。我希望我的API請求在後臺進行更新,以及一些JavaScript以5秒爲基礎更新網站,以便每5秒鐘可以獲取新數據。
我很想得到一些幫助。我想在CRON中做一些事情,但主機不提供每5秒運行一次CRON。任何解決我的問題?如何執行在PHP的API調用每5秒異步
回答
只會運行在一個無限循環的PHP腳本,而不是試圖運行它重新每隔5秒的最簡單方法。
喜歡的東西:
#!/usr/bin/env php
<?php
while (true) {
CacheStuff();
sleep(5);
}
然後使用像羊羣的東西,以防止它運行不止一次觸發它在cron。
* * * * * flock -n /var/lock/cache_script.lock /path/to/myscript.php
你可以做到沒有cron。像這樣的東西會工作:
- 用戶的瀏覽器發送請求到您的API;
- 您的API檢查緩存中是否存在值(Memcached?),如果它存在 - 從緩存中提供;
- 如果沒有緩存條目,你的API使得輸出請求,排序/處理回覆,然後比一個cron溶液的至少5秒鐘
優勢過期時間緩存它 - 如果沒有你網站上的活躍用戶,沒有不必要的傳出請求。
您也可以考慮在瀏覽器端使用WebSockets的。
我的意思是對某個公司的基於livescore的api做一個api請求。緩存該數據,並且當有人加載網站時,它會每隔5秒向緩存發送一次請求,如果緩存存在的時間超過5秒,則會發出新的api請求,並且該數據會再次緩存。這基本上無限循環。 –
@SandiKarajic是的,我理解正確然後我的答案仍然是正確的。與'cron'實現不同,我的方式是按需 - 沒有用戶,沒有負載。有用戶 - 有外部API請求 –
我的假設: 你不要有cron的,memcached的,Redis的等等(基本存取問題)
樣品 可以將數據保存到一個文件作爲JSON對象中的任何機會。
例如你的文件名是「5分鐘,data.json」
因此您的代碼即可;
$timeout_sec = 5;
$file_path = '5min-data.json';
if (file_exists($file_path) && ((filemtime($file_path) - time()) < ($timeout_sec * 60))) {
$data = json_decode(file_get_contents($file_path), true);
}
else {
//produce your data here as array, it is only sample
$data = [
'brand' => 'Mazda',
'model' => 'Mzd3',
'year' => 2016,
'weight' => 1234.5,
'airbags' => [
'front-left',
'front-right',
'back-left'
]
];
file_put_contents ($file_path, json_encode($data));
}
//$data is fresh
- 1. PHP異步執行
- 2. 如何在運行5秒後停止異步線程
- 3. 如何從PHP執行異步應用程序異步
- 4. 在PHP 5中使用mysql_query()進行異步調用嗎?
- 5. 在ComponentDidMount上進行異步API調用
- 6. 異步腳本執行PHP
- 7. 在JavaScript中每隔N秒調用一次異步函數
- 8. 在VSTS中如何每5秒運行20秒webtest
- 9. 如何在每次執行之間以5秒的延遲執行此代碼5次?
- 10. 如何在後臺運行fql請求? (通過php的異步API調用)
- 11. Anko異步API調用異步
- 12. 如何在vba中執行異步函數調用
- 13. 如何自動化異步API調用?
- 14. 每5秒調用一次函數角
- 15. 用回調執行異步函數嗎?
- 16. 執行PHP循環每X秒
- 17. 做好每60秒什麼的,異步
- 18. 如何在NSOperation內執行異步NSURLConnection?
- 19. 如何執行JSON功能每2秒
- 20. 異步執行
- 21. 異步執行
- 22. 如何識別回調是要同步執行還是異步執行?
- 23. 如何使用Watchkit進行異步操作(GPS + API調用)和
- 24. 如何使用Node.js進行異步API調用?
- 25. 遞歸異步API調用
- 26. 異步API調用失敗
- 27. 在調用函數之前執行異步調用
- 28. 如何在一個同步塊中異步執行多個ajax調用(jQuery)
- 29. 如何在使用異步調用的React中使用API?
- 30. 如何從.NET Winforms對ASP.Net webservice執行多個異步調用?
歡迎堆棧溢出。你可以改善你的問題。請閱讀[如何提問](http://stackoverflow.com/help/how-to-ask),其中包括「如何以智能方式提問」鏈接。 – zhon