php同步大量采集,超难问题,新手勿进,谢谢
1、程序类似myip.cn/wanben.net ,他的站可以在3秒内采集出wanben.net的所有信息。
2、我通过php也可以完成采信wanben.net的全部信息,但速度太慢,如
采集网站title
采集alexa信息
采集域名信息
采集服务器信息,
我通过php写的程序,要顺序执行所有代码。所以时间很长,全部采集完成要15秒左右
而myip.cn采集上面同样多的信息,用时3秒左右。
高手请回答,是用php+ajax还是用的php同步批量采集做的,请给出原理
我的站wanben.net采集全是我自己 写的,现在就要是实现大批量快速采集并返回值。
回复讨论(解决方案)
1、程序类似myip.cn/wanben.net ,他的站可以在3秒内采集出wanben.net的所有信息。
2、我通过php也可以完成采信wanben.net的全部信息,但速度太慢,如
采集网站title
采集alexa信息
采集域名信息
采集服务器信息,
我通过php写的程序,要顺序执行所有代码。所以时间很长,全部采集完成要15秒左右
而myip……
数据采集建议使用CURL来完成
PHP的cURL库功能简介:抓取网页,POST数据及其他
本文介绍了PHP的cURL库的几个使用方法。cURL是一个功能强大的PHP库,可以用于获取网页内容,获取网页内容以及取一个XML文件并把其导入数据库等等。
使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。
启用 cURL 设置
首先,我们得先要确定我们的PHP是否开启了这个库,你可以通过使用php_info()函数来得到这一信息。
??phpphpinfo();??
如果你可以在网页上看到下面的输出,那么表示cURL库已被开启。
如果你看到的话,那么你需要设置你的PHP并开启这个库。如果你是在Windows平台下,那么非常简单,你需要改一改你的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了。如下所示:
//取消下在的注释extension=php_curl.dll
如果你是在Linux下面,那么,你需要重新编译你的PHP了,编辑时,你需要打开编译参数??在configure命令上加上“?with-curl” 参数。
一个小示例
如果一切就绪,下面是一个小例程:
??php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://cocre.com');
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL,请求网页
$data = curl_exec($curl);
// 关闭URL请求
curl_close($curl);
// 显示获得的数据
var_dump($data);
如何POST数据
上面是抓取网页的代码,下面则是向某个网页POST数据。假设我们有一个处理表单的网址http://www.example.com/sendSMS.php,其可以接受两个表单域,一个是电话号码,一个是短信内容。
??php$phoneNumber = '13912345678';$message = 'This message was generated by curl and php';$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);$data = curl_exec();curl_close($ch);??
从上面的程序我们可以看到,使用CURLOPT_POST设置HTTP协议的POST方法,而不是GET方法,然后以CURLOPT_POSTFIELDS设置POST的数据。
关于代理服务器
下面是一个如何使用代理服务器的示例。请注意其中高亮的代码,代码很简单,我就不用多说了。
??php $ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');$data = curl_exec();curl_close($ch);??
关于SSL和Cookie
关于SSL也就是HTTPS协议,你只需要把CURLOPT_URL连接中的http://变成https://就可以了。当然,还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证站点。
关于Cookie,你需要了解下面三个参数:
CURLOPT_COOKIE,在当面的会话中设置一个cookie
CURLOPT_COOKIEJAR,当会话结束的时候保存一个Cookie
CURLOPT_COOKIEFILE,Cookie的文件。
HTTP服务器认证
最后,我们来看一看HTTP服务器认证的情况。
??php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, '[username]:[password]')
$data = curl_exec();
curl_close($ch);
??
关于其它更多的内容,请参看相关的cURL手册。
官方CURL中文文档:
curl_setopt
问下楼主,如果网络环境不好,或者网站数据量大,或者php程序结构执行比较费时间,php执行超时怎么办?
引用楼主 mywaster 的回复:
1、程序类似myip.cn/wanben.net ,他的站可以在3秒内采集出wanben.net的所有信息。
2、我通过php也可以完成采信wanben.net的全部信息,但速度太慢,如
采集网站title
采集alexa信息
采集域名信息
采集服务器信息,
我通过php写的程序,要顺序执行所有代码。所以时间很长,全部采集完成要15秒左右……
我就是忘记说了,我就是用php curl写的采集,请根据我的问题回答
采集网站title
采集alexa信息
采集域名信息
采集服务器信息
想同时进行怎么办??????????
有能力自己写扩展呗,多线程,云计算
引用 1 楼 skyaspnet 的回复:
引用楼主 mywaster 的回复:
1、程序类似myip.cn/wanben.net ,他的站可以在3秒内采集出wanben.net的所有信息。
2、我通过php也可以完成采信wanben.net的全部信息,但速度太慢,如
采集网站title
采集alexa信息
采集域名信息
采集服务器信息,
我通过php写的程序,要顺序执行……
采集网站title
这个很简单,在获取到数据后直接正则即可取出。
采集alexa信息
这个需要向alexa发送查询即可获取到数据,建议和获取TITLE的操作分开。
采集域名信息
这一步也同样需要发送查询命令,建议也分开做
采集服务器信息
服务器信息只能获取到很少的一部分,例如一些头信息,大部分是获取不到的
想要加快速度的话,建议将一系列操作通过一定的方法关联起来,然后再分步执行,这样速度会有比较明显的提高
我测试了一下
首次在 myip.cn上检索wanben.com耗时16秒(当然,我的电脑显示有点慢)
再次在 myip.cn上检索仅仅两秒
所以可以肯定myip.cn用了缓存,你后来看到的检索结果都是从缓存中调出的,所以很快。
我自己解决了
谢谢大伙的思路,看看我空间的办法
http://hi.baidu.com/dalianufo/blog/item/c70ef1d9a1a92a3f10df9b0a.html
http://www.chaiba.com 也很快的,原理类似
http://www.chayiba.com 这个
如果url下面还有子链接呢?例如http://news.ifeng.com/mil/,下面还有子栏目,子链接,该怎么办呢?

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alipay PHP ...

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? PHPStorm으로 개발할 때 때때로 CLI (Command Line Interface) 모드에서 PHP를 디버그해야합니다 ...
