2014-02-06 199 views
0

我現在有一個地方在客戶端此更新函數被調用的秒每X量系統重複調用PHP文件新的值被髮送回客戶端。從服務器端

<?php 
    session_start(); 
    include 'dbconnect.php'; 

    $userid = $_GET['userid']; 

    //Change some values in the database 
    //Add these new values to $json array 

    echo json_encode($json); 
    mysqli_close($link); 
?>' 

這在當時只有一個客戶機處於活動狀態時非常有用。沒有多少客戶活躍。所以我想要的是這個PHP文件每X次被調用一次,不管有多少客戶端。我意識到我可能必須在PHP中創建一個循環,但我無法實現它的工作。誰能告訴我我應該怎麼做?提前致謝。

+0

時候開始學習[WebSockets的(http://www.html5rocks.com/en/tutorials/websockets/basics/)? :) – ghoti

+0

@ghoti實際上,他想要的很可能是cronjob更新值,第二個腳本只是爲了讀取客戶端的值。 – dbemerlin

+0

我同意,但我仍然認爲,看看影響較小的解決方案,而不是有大量請求建立數據庫連接的客戶端會很有價值。我想另一種可能性是PHP處理程序檢查db中記錄的最後更新時間,並且只在比「X時間量」更早時更新。 – ghoti

回答

1

您用於在unix風格的操作系統中安排事情的工具是cron。如果您的服務器運行MS Windows,則需要使用其他一些調度程序。

有幾種方法可以使用cron來運行腳本。

首先,如果您有可用的CLI版本的PHP(而不是Apache模塊或fcgi版本),則可以直接運行它。在我的系統,一個cron作業運行腳本每分鐘一次可能是這樣的:

* * * * * /usr/local/bin/php /path/to/your/script.php 

注意,在體系,php二進制可能位於/usr/bin//opt/local/bin/或其他地方。您需要檢查操作系統的軟件包存儲庫以找到位置,或從終端輸入which php

如果使用「shebang」在腳本的開始,你可以擺脫一個簡單的cron作業:有關運行PHP shell腳本

* * * * * /path/to/your/script.php 

更多信息,可以發現here。一個警告雖然...如果您直接啓動腳本,他們將運行作爲擁有cron作業,可能有安全(或至少是許可)影響的用戶。如果您不明白這意味着什麼,請在做之前提出更多問題!

如果有一個命令行PHP可用,你仍然可以有通過cron運行,由像curlwgetfetch命令行HTTP客戶端獲取它的PHP腳本(取決於您的操作系統)。例如:

* * * * * curl -o /dev/null http://example.com/path/to/script.php 

* * * * * wget -O /dev/null http://example.com/path/to/script.php 

在UNIX系統上,你可以man crontab關於如何安裝cron作業指令,以及可能man 5 crontab(取決於您的操作系統)的說明,對於格式設置特定的時間。請注意,cron使用1分鐘的粒度。如果你想要比這更高的頻率,你可以僞裝它。例如,對於每分鐘3次:

* * * * * /path/to/your/script.php 
* * * * * sleep 20; /path/to/your/script.php 
* * * * * sleep 40; /path/to/your/script.php 

如果你想要更小的頻率,可以使用crontab's documented format。例如,平日每隔五分鐘,但是每隔10分鐘,週末:

*/5 * * * 1-5 /path/to/your/script.php 
*/10 * * * 6-7 /path/to/your/script.php