本文目录一览:
php for循环如何获取循环结果的值代码如下
?php
$arr=array();
for($i=0;$i4;$i++)
{
$a=rand(0,9);
$arr[$i]=$a;
}
var_dump($arr);
?
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秒的默认执行时间。
火车采集器使用PHP插件配置循环标签的方法
*参数说明:
* LabelUrl - 当前采集的页面的Url地址
*$LabelCookie - 当前采集页面,服务器返回的Cookie信息。
根据以上参数可以推断,我们需要在$LabelArray['Html'] 中对原标签进行处理
例如(替换):
插件中:
if( LabelArray['PageType']=="Content")
{
LabelArray['Html']);
}
else if( JsonData[initDataObj][goods][skus] as specs = normalPrice = groupPrice = skuId = shuxing = "";
foreach ( spec) {
spec[spec_key].'/spanspan:'. shuxing = spe;
}
shuxing.'/spanspan单价:'. sku[groupPrice].'/spanspanskuId:'. LabelArray['Html']='test'. LabelArray['Html'];
}
遇到的坑:
测试时在else if( LabelArray['PageType']=="List")中处理
一个插件文件需要在对应的配置中选择才会执行,例如插件有请求处理,结果处理,但是火车头配置中至选了结果处理插件,则请求的部分不会执行