2011-08-25 52 views
0

我是Socket編程的新手。我正在客戶端機器上編寫一個應用程序,以便偶爾請求某些數據或發送一些數據。這種交換最好每月進行一次或兩次,定期進行。從我一直在進行套接字編程的研究中,我需要一個執行永無止境的腳本。 Instintivelly我認爲這會不必要地消耗這種頻繁使用的資源,但PHP沒有中斷機制。理想的腳本會坐在那裏無所事事,只有當通過端口進行通信時,腳本纔會醒來並執行。這在其他語言中將通過中斷完成。PHP Socket編程 - 輪詢與中斷

任何人都可以提出一種方法,我可以解決這個問題嗎?

感謝 約翰

回答

0

你可以嘗試相結合的辦法。編寫PHP腳本,以便輪詢/等待有限的時間,並使用調度程序在特定時間運行,例如每15分鐘運行一次。我寫了一個非常簡單的套接字程序來與醫療設備交談。它並不佔用太多資源讓它坐下來等待,但如果你擔心的話,可以用上面的技巧來限制。

+0

謝謝,這可能是一種做法。我會給它一個裂縫。這聽起來有點浪費資源! – user505988

1

可以使用socket_selectnull第四個參數來讓腳本無限期地休眠,並在要讀取套接字上的數據時喚醒它。

另一種效率較低的方法是輪詢,睡眠n分鐘,再次輪詢等等。

0

約翰,

在你的問題,你提到這個可能的交易將發生在至多一個或每月兩次。你有沒有考慮過在客戶端使用cron(或者等價的窗口)。也許每小時運行一次檢查一次?

由於數據非常少見,它非常依賴時間?

+0

不應該作爲評論發佈嗎?這不是一個真正的答案。 –

+0

嗨,謝謝我試圖讓它更具問題風格,但儘可能多地提供周圍的信息/思考過程。 – user505988