❶ 怎樣利用php獲取資料庫中指定的記錄
1.增刪改只在SQL語句上不同。都使用的是PHP的query函數。如果是MSSQL資料庫那麼query函數就是mssql_query($sql);如果是MYSQL那就是mysql_query($sql);2.操作原理就是(1)首先建立與資料庫伺服器的連接(2)選擇要操作的資料庫(3)利用資料庫的會話句柄來對所選擇的資料庫進行SQL語句查詢給你舉例。查詢XXX表的所有數據-----建立資料庫連接部分---<?php$hostname="資料庫所在的計算機名或者IP地址";$dbuser="sa";//資料庫的用戶名$dbpass=""; //資料庫密碼$dbname="test";//要訪問的資料庫名 $link=@mssql_connect($hostname,$dbuser,$dbpass) or die ("連接資料庫出錯"); //$link就是以後查詢用到的會話句柄。@mssql_select_db($dbname);//進行增刪改的查詢$sql="select * from XXX";@mssql_query($sql,$link);?>到此,SQL語句就執行完了。
❷ php 怎樣 採集到 阿里巴巴的商品信息
<?php
classalibaba_analyse{
var$code;
var$price;
var$info;
//你的錯誤位置,構造函數是__construct,而不是__constructs
publicfunction__construct($keywords)
{
//http://search.china.alibaba.com/selloffer/offer_search.htm?keywords=頁面是GBK編碼,所以需要先轉成GBK,在進行URL編碼.
$u="http://search.china.alibaba.com/selloffer/offer_search.htm?keywords=".urlencode(iconv('UTF-8','GB2312',$keywords));
$this->code=file_get_contents($u);
}
publicfunctionget_price()
{
/*
價格是在<spanclass="sw-ui-font-priceIcon">450<spanclass="smallSize">.00</span><spanclass="priceUnit"></span></span>這樣的欄位中.
而不是在<divclass="pricef12c-e1">.*([d.]+?).*</div>中
preg_match_all('/<divclass="pricef12c-e1">.*([d.]+?).*</div>/sU',$this->code,$price);
*/
preg_match_all('/<spanclass="sw-ui-font-priceIcon">(d+)(?:<spanclass="smallSize">)([.d]{3})?</span>/sU',$this->code,$price,PREG_SET_ORDER);
/*
得到的數據格式,所以需要使用array_map整理價格
Array
(
[0]=>Array
(
[0]=><spanclass="sw-ui-font-priceIcon">570<spanclass="smallSize">.00</span>
[1]=>570
[2]=>.00
)
....
)
*/
$this->price=array_map(create_function('$a','return$a[1].$a[2];'),$price);
}
}
$ali=newalibaba_analyse("聯想筆記本");
$ali->get_price();
print_r($ali->price);
代碼給出了, 而且經過了測試. 代碼中有註解.
你自己拷貝過去試試吧
希望能夠採納!,能當成優質答案就最好啦.!
❸ 用PHP進行數據採集
$strPreg = "|<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>|U";
搞定了才發現你都沒懸賞分。。。
❹ 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'
不知道你明白了沒有