想通过采集代理ip来做代理ip池,通过大量的Ip提高seo效果,习惯了正则处理,但是今天有时间测试下queryList,毕竟工欲善其事必先利其器。
// 保存全部的代理IP
$allProxy = [];
// 循环爬取数据
for ($i = 0; $i < 10; $i++) {
// 页码
$page = $i + 1;
// 请求地址
$url = 'https://proxy.ip3366.net/free/?action=china&page=' . $page;
// 定义采集规则
$rules = [
'ip' => ['td[data-title=IP]', 'text'],
'port' => ['td[data-title=PORT]', 'text'],
'type' => ['td[data-title=类型]', 'text'],
];
// 循环的dom主体
$range = 'tbody tr';
$rt = QueryList::get($url)->rules($rules)->range($range)->query()->getData();
foreach ($rt->all() as $ip) {
$allProxy[$ip['ip']] = $ip;
}
// 休息1秒
//sleep(1);
} 项目需要使用websocket推送最新订单,客户服务器非linux不支持swoole,因此使用原生,直接上代码(1).PHP服务端<?php ini_set('error_reporting', E_ALL ^ E_NOTICE); ini_set...
array_merge是最常用的数组合并方法,+号同样也可以,但是却有很大不同。array_merge遇到相同字符串key,后面数组的key会覆盖前面数组的key,+号正好相反。$a = [ 'one' => 'A on...
上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...
PHP7中,通过生成器委托(yield from),可以将其他生成器、可迭代的对象、数组委托给外层生成器。外层的生成器会先顺序 yield 委托出来的值,然后继续 yield 本身中定义的值。同时yield from也能获取到生成器的返回值...
在正式介绍前先抛出一段代码:<?php //输入的密码 $password = empty($_POST['password']) ? 0 : $_POST['password']; //设置的密码...