簡體   English   中英

如何每30秒自動加載xml文件?

[英]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 &

現在您可以使用topps 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM