Jadual Kandungan
回复讨论(解决方案)

php采集程序

Jun 23, 2016 pm 01:43 PM

完成了大约10分钟的采集后,出现fwrite(......)请求,出现警告,随后出现丢包,有些网页就出现抓取失败的问题。。

前面10分钟都没问题,10分钟之后,fwrite(....)发送请求出现警告的频率慢慢变大

难道是被服务器拒绝了请求?

错误提示信息:

Notice: fwrite(): in E:\CodeEdit\php\http\001.php on line 200
对链接http://www.mmkao.com/Beautyleg/201410/6565_6.html发起请求
即将采集下一组
对链接http://www.mmkao.com/Beautyleg/201410/6559.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_2.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_3.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_4.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_5.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_6.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_7.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_8.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_9.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6559_10.html发起请求
即将采集下一组
对链接http://www.mmkao.com/Beautyleg/201410/6549.html发起请求
对链接http://www.mmkao.com/Beautyleg/201410/6549_2.html发起请求

Notice: fwrite(): in E:\CodeEdit\php\http\001.php on line 200
对链接http://www.mmkao.com/Beautyleg/201410/6549_3.html发起请求
即将采集下一组

Notice: fwrite(): in E:\CodeEdit\php\http\001.php on line 200
对链接http://www.mmkao.com/Beautyleg/201410/6537.html发起请求

Notice: fwrite(): in E:\CodeEdit\php\http\001.php on line 200

有点疑惑,代码的实现原理还是很简单的,只是网络请求调试想对困难一些,有这方面经验的,可以分享一下


代码有点多?居然提示不能超过10000个字符。 
代码链接在这里:      http://blog.csdn.net/free_program_1314/article/details/41798199


回复讨论(解决方案)

你在 100 行处 $this->conn = fsockopen($this->ip,$this->port,$errno,$errstr,$this->timeout);
后只在 101 行判断了是否连接成功,虽然不成功时会返回 false
但在 62 行调用时 $this->connect(); 并没有检查是否返回了 false
即无论连接是否成功,程序都会继续执行。于是很自然的把隐患扩散了出去
你至少得在 200 行的 fwrite($this->conn,.... 前,判断一下 $this->conn 是否是资源

而若 $this->connect() 失败,就该转到策略处理程序,还按正常流程进行是没有意义的

你在 100 行处 $this->conn = fsockopen($this->ip,$this->port,$errno,$errstr,$this->timeout);
后只在 101 行判断了是否连接成功,虽然不成功时会返回 false
但在 62 行调用时 $this->connect(); 并没有检查是否返回了 false
即无论连接是否成功,程序都会继续执行。于是很自然的把隐患扩散了出去
你至少得在 200 行的 fwrite($this->conn,.... 前,判断一下 $this->conn 是否是资源

而若 $this->connect() 失败,就该转到策略处理程序,还按正常流程进行是没有意义的



if($this->conn)       {           if($len != fwrite($this->conn, $this->cmd_line.$this->header.$this->post_content,$len))            {                $this->status = "发送请求failed";                die($this->status);            }       }       else       {           die($this->status);       }
Salin selepas log masuk

//问题出在fwrite(....)发送请求失败这里。。。
Notice: fwrite(): in E:\CodeEdit\php\http\001.php on line 213
发送请求failed

你没有判断那个 $this->conn 是否有效

你没有判断那个 $this->conn 是否有效



稍加改进了一些,链接这些都没问题,现在的错误提示是:

对链接http://www.mmkao.com/Beautyleg/201412/7066_9.html发起请求
没有下一页,原因是:匹配image分页组失败

但是getRollLink这个匹配下一页的函数并没有什么问题,我反复测试过,即便从本地保存的网页里读取也没问题,而且在出现这个问题之前,也采集了很多网页,也没出现问题。 

对链接http://www.mmkao.com/Beautyleg/201412/7066_5.html发起请求
对链接http://www.mmkao.com/Beautyleg/201412/7066_6.html发起请求
对链接http://www.mmkao.com/Beautyleg/201412/7066_7.html发起请求
对链接http://www.mmkao.com/Beautyleg/201412/7066_8.html发起请求
对链接http://www.mmkao.com/Beautyleg/201412/7066_9.html发起请求
没有下一页,原因是:匹配image分页组失败

改进后的发在这里了:  http://blog.csdn.net/free_program_1314/article/details/41805697

举例说明这个存在的问题,比如采集完第九个网页之后,采集第十页的时候出现匹配失败,而这个采集第十页的链接是第九页的网页信息提供的。  打开采集到的第九个文件,读取并匹配下一页的链接是没有问题的。出现这样的情况多次,每次我都尝试从文件读取并匹配下一页的链接都是没问题的。


也就是说匹配下一页的链接,如果有问题,刚开始采集就应该出现这个提示。。。现在的问题是,这个问题不定期出现

不定期出现是正常的,就算是用浏览器访问,偶尔出现页面打不开(刷新一下就好了)不也是正常的吗?
你只要随时检查连接的有效性,并在失效时做出处理就可以了。比如等几秒再次连接

不定期出现是正常的,就算是用浏览器访问,偶尔出现页面打不开(刷新一下就好了)不也是正常的吗?
你只要随时检查连接的有效性,并在失效时做出处理就可以了。比如等几秒再次连接



偶明白了 

不定期出现是正常的,就算是用浏览器访问,偶尔出现页面打不开(刷新一下就好了)不也是正常的吗?
你只要随时检查连接的有效性,并在失效时做出处理就可以了。比如等几秒再次连接



这个问题通过检测到匹配失败时,从保存的上一页网页中,提取下一页链接,暂时解决了:

对链接http://www.mmkao.com/Beautyleg/201411/6906_13.html发起请求
没有下一页,原因是:匹配image分页组失败,尝试从文件中读取匹配模式
对链接http://www.mmkao.com/Beautyleg/201411/6906_14.html发起请求
即将采集下一组
对链接http://www.mmkao.com/Beautyleg/201411/6892.html发起请求
对链接http://www.mmkao.com/Beautyleg/201411/6892_2.html发起请求
对链接http://www.mmkao.com/Beautyleg/201411/6892_3.html发起请求


采集了10分钟之后,还是出现请求失败的问题,,,fwrite(),又是这个老问题,应该可以通过重置连接解决

看起来很NB的样子

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pembalakan PHP: Amalan Terbaik untuk Analisis Log PHP Pembalakan PHP: Amalan Terbaik untuk Analisis Log PHP Mar 10, 2025 pm 02:32 PM

Pembalakan PHP adalah penting untuk memantau dan menyahpepijat aplikasi web, serta menangkap peristiwa kritikal, kesilapan, dan tingkah laku runtime. Ia memberikan pandangan yang berharga dalam prestasi sistem, membantu mengenal pasti isu -isu, dan menyokong penyelesaian masalah yang lebih cepat

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Terangkan konsep pengikatan statik lewat dalam PHP. Terangkan konsep pengikatan statik lewat dalam PHP. Mar 21, 2025 pm 01:33 PM

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Mar 28, 2025 pm 05:12 PM

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

See all articles