❶ 怎样利用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'
不知道你明白了没有