资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

php定时采集数据库 php采集器

利用php代码,如何让服务器自动定时更新数据库数据?

兄弟。。服务器是不能操作数据库的,只有php才能操作数据库。。应该是服务器定期执行某个php程序,这个php程序刷新数据库。。linux下面可以用crontab命令,把你的php程序写在一个文件里面,然后用crontab命令定期调用。。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、网站设计、十堰郧阳网络推广、成都微信小程序、十堰郧阳网络营销、十堰郧阳企业策划、十堰郧阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供十堰郧阳建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

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 21'

* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php /dev/null 21'

* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php /dev/null 21'

不知道你明白了没有

php 百度 知道数据采集

问题其实不难,自己都能写。给你几个思路吧:

1.在百度知道中,输入linux,然后会出现列表。复制浏览器地址栏内容。

然后翻页,在复制地址栏内容,看看有什么不同,不同之处,就是你要循环分页的i值。

当然这个是笨方法。

2.使用php的file或者file_get_contents函数,获取链接URL的内容。

3.通过php正则表达式,获取你需要的3个字段内容。

4.写入数据库。

需要注意的是,百度知道有可能做了防抓取的功能,你刚一抓几个页面,可能会被禁止。

建议也就抓10页数据。

其实不难,你肯定写的出来。 还有,网上应该有很多抓取工具,你找找看,然后将抓下来的数据

在做分析。写入数据库。

php高手,dedecms(织梦)系统怎么弄才能做到(定时自动采集)求指导……谢谢……

这个系统是PHP写的,虽然PHP可以写计划任务的程序,但是他需要有人访问站点进行触发执行,否则他自己不会执行。

我编写了一个php采集器。主要是采集某个网站的文本信息,可是浏览器时间一长就断了

这是因为,PHP脚本是一般情况下只能运行30秒左右,

具体数据与服务器的设置有关。

如果你的脚本超时,就要对任务对进分解。

做成任务接力的形式。

当PHP页面处理大事务时,页面往往会发生超时的错误,我解决此问题的方法如下:

1.优化程序代码:

这种方法可能有时立竿见影,但对一些已经很优化或者第三方开发的程序,可能用处不大,但我个人觉得这个办法还是应该优先考虑,这个一个优秀程序员必需有的工作美德。

2.对多个任务进行拆分:

对于一些程序,可能问题并不出现在代码效率上,如Paypal的SOAP调用,大量时间花费在网络的数据传递上了,(此问题在Web Services的远程调用时经常发生),我们当然不能等将来网速的提高来解决这个问题。其实我们可以查看一下在一个POST动作中是否包含了多个任务,如付费、发Email、发货等等。如是这样其实可以对这些任务进行拆分,把这个工作拆分成多个子工作来实现。如执行完付费任务时,使用PHP的 Header函数重定向到发送Email的页面,完成后再定向到其他页面,采用redirect页面的方式来接力地完成任务。

设计三个PHP文件,分别是s2.php s3.php s4.php

让这三个文件进行接力,

s2.php的内容如下

?php

ob_start();

sleep(3);//代表做某些任务所用的时间

echo "在做第一件事。";

header("Location: ");

ob_end_flush();

?

s3.php的内容如下:

?php

ob_start();

$i=$_GET['i']+1;

echo “在做第二件事”;

sleep(3);//用来代表做了某件事件

header("Location: ");

ob_end_flush();

?

s4.php

?php

ob_start();

$i=$_GET['i']+1;

sleep(3);

echo "在做第三件事";

ob_end_flush();

?

变量i用来传送文件之间的参数。


分享文章:php定时采集数据库 php采集器
本文来源:http://www.cdkjz.cn/article/hpjjpi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220