我有一個PHP腳本,當服務器發生特定事件時,必須重新加載客戶端上的頁面(服務器推送)。所以我必須聽取更改。我的想法是有一個文本文件,其中包含當前頁面的頁面加載數量。所以我想監視文件,並在修改後立即使用服務器推送來更新客戶端上的內容。問題是如何跟蹤文件中的PHP更改?使用PHP跟蹤文本文件中的更改
3
A
回答
1
你可以這樣做:
<?php
while(true){
$file = stat('/file');
if($file['mtime'] == time()){
//... Do Something Here ..//
}
sleep(1);
}
這將不斷尋找在每秒一個文件的修改時間的變化。如果你不限制它,你可以殺死你的磁盤IO,並可能需要調整你的ulimit。
+0
確保你包含一些東西來最終打破這個循環!這會讓機器立刻崩潰。 –
0
這將檢查你的文件一變:
<?php
$current_contents = "";
function checkForChange($filepath) {
global $current_contents;
$new_contents = file_get_contents($filepath);
if (strcmp($new_contents, $current_contents) {
$current_contents = $new_contents;
return true;
}
return false;
}
但是,這不會解決你的問題。服務客戶端的php文件在呈現的html發送給客戶端之前完成執行。該客戶端需要回調一些php文件來檢查更改...因爲這也是一個http請求,該文件將完成執行並忘記內存中的任何內容。
爲了正確地解決這個問題,您可能必須退出檢查文件的想法。服務器需要知道何時以及如何聯繫當前連接的客戶端,或者這些客戶端需要定期輪詢輕量級服務。
0
這是一種詭計,但是如何創建一個吸引頁面的cron作業,將它存儲在作用域或表中,然後每隔30秒比較一下呢?
相關問題
- 1. 跟蹤文本文件中更改的最佳方式?
- 2. 用於跟蹤Java中文件更改的文件ID?
- 3. 如何使用jquery跟蹤文本框中的更改
- 4. 如何跟蹤文件上的更改?
- 5. actionscript 3跟蹤動態文本更改
- 6. 跟蹤更改爲純文本 - rails,jquery
- 7. 的承諾,而分期階段未跟蹤文件跟蹤文件更改
- 8. Hudson:跟蹤每個版本中更改文件的數量
- 9. GNU如何跟蹤文件更改?
- 10. C++/Qt:跟蹤文件系統更改
- 11. knockout.js事件跟蹤輸入文本框中的每個文本更改
- 12. 如何更改和跟蹤對文本區域的更改
- 13. 在git中更改跟蹤文件並允許分支更改
- 14. 使用Delphi跟蹤對文件夾所做的更改?
- 15. 使用vb.net或C#更改對文件夾的跟蹤
- 16. 使用更改表跟蹤
- 17. 使用$ watch跟蹤更改
- 18. Mercurial:您是否可以跟蹤已更名爲另一個跟蹤文件的文件中的更改?
- 19. Git忽略部分被跟蹤文件的本地更改
- 20. 用條件更改XML中的跟蹤
- 21. 在scala js中跟蹤文本框中的更改
- 22. 使用rails跟蹤更改 - 「更改?」
- 23. 什麼是GIT中的跟蹤文件和未跟蹤文件?
- 24. 跟蹤文件
- 25. 如何跟蹤頁面更改(Chrome上下文腳本插件)?
- 26. 我應該如何開始跟蹤文件更改/版本?
- 27. 如何更改核心文本中的字母間距/跟蹤?
- 28. 跟蹤更改
- 29. 跟蹤更改
- 30. 跟蹤更改
PHP沒有這樣的機制,因爲沒有連續輪詢文件來查看時間戳/大小是否發生了變化。大多數現代操作系統都有通知系統,您可以將它們掛鉤,但是,哪些操作可以爲您解除繁重的工作。但既然你沒有說你正在使用哪個操作系統... –
http://en.wikipedia.org/wiki/Comet%5F%28programming%29這可能有幫助 – Tivie
但是不會重新加載頁面原因櫃檯也改變了?所以你最終會得到一個不斷刷新的頁面。 –