本文目录一览:
- 1、php单个采集后还能组合到一起吗
- 2、PHP 采集系统中将目标网站的内容获取后,因为是UTF-8编码的网站,我采集后赋予$content,如何转换成GB2312
- 3、phpcmsv9采集后出现404错误如何解决
- 4、php采集大数据的方案
- 5、PHP采集入库问题
- 6、php采集程序,增加了多页采集后写入数据库会重复写入,找高手请教,加QQ 1657805951
php单个采集后还能组合到一起吗
理论上是可以的,你可以将采集的内容临时都存到一个文本中,然后统一读出来
PHP 采集系统中将目标网站的内容获取后,因为是UTF-8编码的网站,我采集后赋予$content,如何转换成GB2312
mb_convert_encoding($content,"UTF-8", "GB2312"); //编码转换
或
$content = iconv(”GB2312”, “UTF-8″, $content);
这php手册上不是用的吗?
phpcmsv9采集后出现404错误如何解决
不是这个问题!。。。试过了。。清空缓存。封闭浏览器之后从新打开。都不可。在线等。
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采集入库问题
php 里有$nr = implode(‘#’,$arr) 方法 ,就可以 了
不过上面的组成的是“内容1#内容2”,没有最后面的一个#,要是必须的话
就是$nr = implode('#',$arr).'#'
在笨的方法,就是用
foreach( $arr as $vl){
$nr.=$vl."#";
}
php采集程序,增加了多页采集后写入数据库会重复写入,找高手请教,加QQ 1657805951
可以把循环停了,每次采集只采集一条,然后利用系统命令来实现连续采集的效果,或者每采集一条数据后延时5秒钟,或者根据翻页的页数为延时的时间倍数,例如4页,就是5秒*4,而10页就是5秒*10,这样去采集!