我正在開發一個實時比分網站,我的目標是刷新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. 每5秒異步執行一次Android Web服務
- 2. 異步PHP執行
- 3. PHP異步執行
- 4. 如何在執行異步調用之前阻止執行?
- 5. 如何在運行5秒後停止異步線程
- 6. 如何從PHP執行異步應用程序異步
- 7. 每5秒執行一次腳本
- 8. 在PHP 5中使用mysql_query()進行異步調用嗎?
- 9. 如何在調用時立即執行異步調用?
- 10. 在ComponentDidMount上進行異步API調用
- 11. Php,執行動作前等待5秒
- 12. 異步腳本執行PHP
- 13. 同步異步API調用
- 14. 在JavaScript中每隔N秒調用一次異步函數
- 15. 在VSTS中如何每5秒運行20秒webtest
- 16. 如何在後臺運行fql請求? (通過php的異步API調用)
- 17. 如何在每次執行之間以5秒的延遲執行此代碼5次?
- 18. Anko異步API調用異步
- 19. 如何在asp.net中執行異步Web調用
- 20. 如何在vba中執行異步函數調用
- 21. 如何自動化異步API調用?
- 22. 如何每x秒執行一次方法調用?
- 23. 如何在改造中執行同步API調用1.9
- 24. 用回調執行異步函數嗎?
- 25. 在IOS 5中發送異步調用
- 26. 每5秒調用一次函數
- 27. 每5秒調用一次函數角
- 28. 每20秒執行一次php函數
- 29. 執行PHP循環每X秒
- 30. 在node.js中調用API調用的異步並行
歡迎堆棧溢出。你可以改善你的問題。請閱讀[如何提問](http://stackoverflow.com/help/how-to-ask),其中包括「如何以智能方式提問」鏈接。 – zhon