[英]How to autoload an xml file every 30 seconds?
目前,我有一個parser.php,它加載一個xml文件並將新數據從xml文件插入到mysql數據庫中。 我將如何每30秒刷新一次此php文件,以便我的mysql表始終具有新鮮數據? 我想我可以使用短輪詢來做到這一點,但我猜想這不是最有效的選擇。
提前致謝
這是非PHP解決方案,需要您具有Shell(SSH)訪問權限才能運行腳本,但是,如果需要,您也可以使用exec()通過PHP運行它。 共享主機環境可能會給這種方法帶來挑戰,但是只要您可以在用戶憑據下執行腳本,就可以毫無問題地運行它。
首先,您需要創建一個包含以下內容的bash腳本並將其保存(在本示例中,我將使用名稱parser.sh
)。 然后,您可以根據需要在sleep 30
行中調整超時。
#!/bin/sh
while true
do
php parser.php
sleep 30
done
為了運行腳本,您需要為其授予執行權限。
chmod +x parser.sh
現在,您可以將nohup命令與&符號一起使用,以確保即使關閉外殼程序(SSH)之后發出終止信號,該腳本也將在后台運行。 &符很重要 !
nohup ./parser.sh &
現在您可以使用top
或ps aux | grep parser
ps aux | grep parser
以確保腳本正在運行。 如前所述,您還可以使用PHP exec()
啟動該過程,但是shell仍然是首選的也是最可靠的方法。
如果要停止執行腳本的后台進程,則只需殺死它即可。 只需使用ps aux | grep parser
ps aux | grep parser
找出解析器進程的PID(在左側第二欄中),並將其與kill命令一起使用。
kill 4183
您需要使用cronjob,但是crons作業每1分鍾或更長時間運行一次。
另一種方法是制作一個“守護程序”。
很基本的例子:
<?php
while(true) {
// check if 30 seconds has passed.
// then execute some function...
};
?>
然后,您需要在終端中執行此操作:
$ php script.php &
該鏈接應該有所幫助。
偉大的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.