2013-10-16 72 views
-1

有沒有一種方法可以在服務器上運行PHP文件而無需使用瀏覽器? 如果可能的話:PHP觀看json的變化

有一個JSON文件每3分鐘更改一次(它是一個小JSON),如果文件更改,我想繼續觀看PHP,然後我想調用一個PHP函數。

AJAX可能嗎?

有人能幫助我嗎?

Thanx提前

+1

幫助你的需要發佈code.Without代碼它太難張貼解答。 –

+0

您可能會發現[this](http://www.catswhocode.com/blog/how-to-easily-monitor-your-web-server-using-php)文章有用。 –

+0

看看cronjobs。 –

回答

0

可以運行PHP5-CLI腳本(含家當#!/usr/bin/php)。這是Linux解決方案。

使用下面的成分:

  • 垃圾收集器
  • set_time_limit(0)

初始化上面的事,那麼讀取的內容到一個變量

#!/usr/bin/php 
<?php 
$jsonCall = function() { return file_get_contents('/var/www/path/to/your/json'); }; 
set_time_limit(0); 
gc_enable(); 
$json = $jsonCall(); 
while (true) { 
    sleep(15); // Wait 15 seconds 
    if ($json != $jsonCall()) { 
     $json = $jsonCall(); 
     // Something changed in the json file 
    } 
} 

使文件的可執行(由除root以外的用戶):

chmod 700 script.php 

運行此腳本(不是root用戶):

./script.php 
+0

爲什麼使用eval? – EJTH

+0

@EJTH在答案中提到,您可以使用任何東西,類,函數,方法,或者只是在任何地方使用file_get_contents。只是爲了縮短代碼和演示目的。 – DanFromGermany

+0

我不會使用eval,即使是爲了演示的目的,有人可能會偶然發現這一點,並認爲它實際上是一個聰明的想法。此外,你的代碼將不起作用,你錯過了一個返回語句和在該eval語句內的分號,所以它總是會返回false,因爲評估的代碼有語法錯誤(並且永遠不會返回值) – EJTH