免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3142 | 回复: 10
打印 上一主题 下一主题

“多线程”采集技术 可行性 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-25 16:16 |只看该作者 |倒序浏览
单线采集太慢了

有哪位老兄用多线程方式吗?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2007-04-25 16:29 |只看该作者
本版我发过文章,完全可行,而且给商业客户做过这样子的东西,切实可用。

但是是多进程,而不是多线程。

论坛徽章:
0
3 [报告]
发表于 2007-04-25 17:29 |只看该作者
原帖由 HonestQiao 于 2007-4-25 16:29 发表
本版我发过文章,完全可行,而且给商业客户做过这样子的东西,切实可用。

但是是多进程,而不是多线程。


是 php-cli模式下的多进程吗?

论坛徽章:
0
4 [报告]
发表于 2007-04-25 17:41 |只看该作者
多进程完全可以的,php-cli下的话

论坛徽章:
0
5 [报告]
发表于 2007-04-25 19:51 |只看该作者
hoho..谢谢,找到 :)

论坛徽章:
0
6 [报告]
发表于 2007-04-27 08:34 |只看该作者
发现问题了...

可能是


  1.         function thread($id,$url)
  2.         {       
  3.                 $PHP_SELF        =$PHP_SELF?$PHP_SELF:$_SERVER['PHP_SELF'];        //获取本身路径
  4.                 $host                =fsockopen($_SERVER['HTTP_HOST'],80);                //获取主机地址
  5.                 fputs($host,"GET {$PHP_SELF}?id={$id}&url={$url}\r\n");        //对当前文件发送请求
  6.                 fclose($host);
  7.         }
复制代码


fputs 被主机拒绝了?

[Fri Apr 27 00:53:12 2007] [error] [client 222.77.189.xx] client denied by server configuration: D:/apache

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2007-04-27 09:05 |只看该作者
原帖由 bs 于 2007-4-27 08:34 发表
发现问题了...

可能是

[code]
        function thread($id,$url)
        {       
                $PHP_SELF        =$PHP_SELF?$PHP_SELF_SERVER['PHP_SELF'];        //获取本身路径
                $host                =fsockopen($_SERVER['HTTP_HOST'],80);                //获取主机 ...


主机完全可以也有权这么做。

论坛徽章:
0
8 [报告]
发表于 2007-04-27 18:03 |只看该作者
你可以复合式的.

fork{
     thread{
           fsockopen()
    }
}

写一个程序 php cli运行它..然后他自己fork 进程. 每个进程里有N个线程..... 和apache mpm-work 一样...

论坛徽章:
0
9 [报告]
发表于 2007-04-27 18:43 |只看该作者
问题解决了,是因为我用fputs了非标准的http头

换成:
fputs($host,"GET http://{$hostname}:80{$PHP_SELF}?id={$id}&url={$url}\r\n Host:{$hostname}\r\n");

后问题解决!!

论坛徽章:
0
10 [报告]
发表于 2007-04-27 18:52 |只看该作者
原帖由 netkiller 于 2007-4-27 18:03 发表
你可以复合式的.

fork{
     thread{
           fsockopen()
    }
}

写一个程序 php cli运行它..然后他自己fork 进程. 每个进程里有N个线程..... 和apache mpm-work 一样...



谢谢,这个是真正的线程吗?在性能方面不知有没有测试过



我发现在多进程环境下运行,系统资源占用很大,想想是不是改天可以用来做压力测试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP