2014-02-05 44 views
0

我使用PHP DOM從網頁中提取數據,然後當我得到所需的信息時,我從下一頁提取鏈接並將代碼指向該頁面等等向前。PHP循環狀態變化監測

我在監視一些變化。

一切都很好,直到我流動緩衝區,因爲它認爲PHP被困在一個循環中,並打破了代碼。我知道我可以刪除暫停,但我想知道是否有人知道更好的方法來構建此代碼,請告訴我。

這是一個基本的流程圖第一網頁

  1. 獲取地址
  2. 做數據提取
  3. 從頁面
  4. 用頭內得到下一個頁面地址重定向到該頁面
  5. 轉到步驟1.除非沒有下一頁,否則停止

所以大多數時候我會在殺死php之前通過這個循環8-12次。我需要繼續這樣做直到我完成流程圖。無論如何,我可以在進入下一頁之前清空緩衝區。順便說一句,這整個事情是在一個代碼中「data.php

+0

試圖創建自己的P * RN過濾器嗎? – Timmetje

+0

查閱php長時間運行的任務。但實際上,PHP對於這種事情來說是一個糟糕的選擇。最好選擇一種帶有線程和內置事件的語言。 – Steve

+0

@TimDinh LOL好!但沒有 –

回答

0

如果你真的想使用PHP作爲你的腳本你應該運行它作爲CLI (Command Line Interface).現在我不知道你是否真的等待提取的數據來查看(實時)或者將數據保存到某個地方供以後使用,但有幾種解決方案。

如果你只是想只運行一次腳本,或者只是想手動運行,請確保你的php已經安裝在你的unix或windows。

Windows:將您的php目錄設置爲您的PATH系統變量,然後您可以在您的命令窗口中運行php myscript.php

Unix:我敢肯定,你不需要解釋^^

有一些PHP CLI features如果你要問的輸入或顯示一些輸出等。

如果你真的想要某種網頁,你可以按下一個按鈕,你的解壓縮就會開始,你想看到數據,那麼你可以做一些事情來保持你的瀏覽器工作。

您可以將您的提取任務排隊,並讓它隨時通過web服務器上的cronjob運行。您的數據可用於查看cronjob運行腳本並提取所有數據的時間。

你也可以告訴cronjob每小時做這個事情,例如保存提取的數據以便查看。

或者您可以使用Ajax創建一個異步調用(jquery example),您仍然需要等待並留在頁面上。但至少你的瀏覽器沒有卡住。