Ⅰ php採集大數據的方案
1、建議你讀寫數據和下載圖片分開,各用不同的進程完成。
比如說,取數據用get-data.php,下載圖片用get-image.php。
2、多進程的話,php可以簡單的用pcntl_fork()。這樣可以並發多個子進程。
但是我不建議你用fork,我建議你安裝一個gearman worker。這樣你要並發幾個,就啟幾個worker,寫代碼簡單,根本不用在代碼里考慮thread啊,process等等。
3、綜上,解決方案這樣:
(1)安裝gearman worker。
(2)寫一個get-data.php,在crontab里設置它每5分鍾執行一次,只負責讀數據,然後把讀回來的數據一條一條的扔到 gearman worker的隊列里;
然後再寫一個處理數據的腳本作為worker,例如叫process-data.php,這個腳本常駐內存。它作為worker從geraman 隊列里讀出一條一條的數據,然後跟你的資料庫老數據比較,進行你的業務邏輯。如果你要10個並發,那就啟動10個process-data.php好了。處理完後,如果圖片地址有變動需要下載圖片,就把圖片地址扔到 gearman worker的另一個隊列里。
(3)再寫一個download-data.php,作為下載圖片的worker,同樣,你啟動10個20個並發隨便你。這個進程也常駐內存運行,從gearman worker的圖片數據隊列里取數據出來,下載圖片
4、常駐進程的話,就是在代碼里寫個while(true)死循環,讓它一直運行好了。如果怕內存泄露啥的,你可以每循環10萬次退出一下。然後在crontab里設置,每分鍾檢查一下進程有沒有啟動,比如說這樣啟動3個process-data worker進程:
* * * * * flock -xn /tmp/process-data.1.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
不知道你明白了沒有
Ⅱ phpcms網站建設中採集的方法,怎麼樣做採集
工具/原料
PHPCMS
文章採集器
方法/步驟
1、首先我們需要下載並安裝GBK格式的PHPCMS系統。
2、下載PHPCMS和文章採集器的介面文件
3、將jiekou.php文件復制到網站的根目錄下,並用記事本打開該文件,修改「密碼驗證」欄目password處的密碼
4、啟動文章採集器,先點擊【第三步發布內容設置】中的"web發布管理配置"
5、在彈出的【web發布配置管理】窗口中單擊右側的【更多】按鈕,導入「phpcms9.wpm」配置模塊,並選擇該模塊
6、設置【web發布配置管理】中的編碼設置、登錄操作、獲取分類欄目等選項
7、單擊【測試】按鈕,在彈出的【發布配置測試】對話框中設置標簽和內容的值,此項為必須設置,否則發布測試文章會失敗。至此PHPCMS已經與文章採集器連接成功。
Ⅲ phpinfo怎麼用
顯示PHP的當前信息,其中包括PHP擴展和編譯版本,伺服器信息和環境,PHP環境中,路徑,主機和本地配置選項,HTTP頭,PHP許可等等(詳細信息可參考PHP手冊)。要得到這些信息,不僅可以從瀏覽器中查看,還可以使用命令行在伺服器上查看。
使用瀏覽器查看很簡單,:只需要在網站目錄創建一個PHP文件,使用上面提到的phpinfo()函數,如:
1:<?php
2:phpinfo();
3:?>
然互在瀏覽器中輸入此文件路徑即可查看。
在Linux伺服器上,還可以使用如下命令,不用瀏覽網頁同樣可以查看PHP信息,如:
php -r 'phpinfo();'
此命令同樣可以得到網頁形式的結果。
(3)php房源信息採集擴展閱讀:
phpinfo使用說明:
boolphpinfo([ int$what = INFO_ALL ] )
輸出PHP當前狀態的大量信息,包含了 PHP 編譯選項、啟用的擴展、PHP 版本、伺服器信息和環境變數(如果編譯為一個模塊的話)、PHP環境變數、操作系統版本信息、path 變數、配置選項的本地值和主值、HTTP 頭和PHP授權信息(License)。
因為每個系統安裝得有所不同,phpinfo()常用於在系統上檢查 配置設置和 預定義變數。
phpinfo()同時是個很有價值的、包含所有 EGPCS(Environment, GET, POST, Cookie, Server) 數據的調試工具。
Ⅳ php curl 大量數據採集
這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據伺服器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數可以由js產生並傳遞url,php後台頁面根據URL抓頁面。然後ajax通過php,在資料庫或者是哪裡設一個標量,標明檢測到哪裡。由於前台的html頁面執行多少時候都沒問題,這樣php的內存限制和執行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環了。(你的500次for循環死了原因可能是獲取的數據太多,大過了php限制的內存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取後再執行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大於30秒的默認執行時間。