V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qq7588245
V2EX  ›  PHP

求组! PHP 采集的时候,没有响应了,怎么才能不影响其他操作?

  •  
  •   qq7588245 · 2017-09-18 09:06:30 +08:00 · 2441 次点击
    这是一个创建于 2404 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没响应的时候还可以做其他操作,是不是要用到非阻塞,还是什么?有没有解决方案?

    17 条回复    2017-09-20 08:54:34 +08:00
    Immortal
        1
    Immortal  
       2017-09-18 09:25:40 +08:00
    超时时间我的哥
    qq7588245
        2
    qq7588245  
    OP
       2017-09-18 09:32:33 +08:00
    Moker
        3
    Moker  
       2017-09-18 09:34:47 +08:00
    你可以去看下 Guzzle 的实现 then 方法
    Immortal
        4
    Immortal  
       2017-09-18 09:35:40 +08:00
    @qq7588245 没响应不是指采集的某个页面没返回导致整个程序阻塞么?
    qq7588245
        5
    qq7588245  
    OP
       2017-09-18 09:38:54 +08:00
    @Immortal 不是,就是正在采集呢 php 一直在运行 ,这个时候就不能访问其他页面了。
    zhengwenk
        6
    zhengwenk  
       2017-09-18 09:53:31 +08:00
    不能访问其他页面。你是用什么模式采集,web?
    sucaihuo
        7
    sucaihuo  
       2017-09-18 09:55:21 +08:00
    不太合理吧,像我用火车头采集,完全不影响
    Immortal
        8
    Immortal  
       2017-09-18 10:00:16 +08:00
    @qq7588245
    ...php 访问其他页面?有点聊不下去了
    你是并发采集还是同步采集?
    同步的话肯定不能做其他操作了啊- - 这个函数还没执行完毕
    做成异步就好了
    vtwoextb
        9
    vtwoextb  
       2017-09-18 10:01:25 +08:00
    采集的对象没有反应,有可能你的被禁止可以用这种策略: https://github.com/hizdm/dynamic_ip 如果是脚本超时了你可以设置一下时间,或者加一些判断
    qq7588245
        10
    qq7588245  
    OP
       2017-09-18 10:24:35 +08:00
    @zhengwenk 对 用 php 直接访问 url
    wekw
        11
    wekw  
       2017-09-18 10:26:15 +08:00
    可以利用 web server 天生的异步能力,用触发 http 请求的形式多线程采集。
    qq7588245
        12
    qq7588245  
    OP
       2017-09-18 10:32:19 +08:00
    @wekw 如果必须要同步呢?
    qq7588245
        13
    qq7588245  
    OP
       2017-09-18 10:32:34 +08:00
    @Immortal 如果必须要同步呢?
    sujin190
        14
    sujin190  
       2017-09-18 10:54:24 +08:00
    多开几个进程就是了啊
    dlllcs
        15
    dlllcs  
       2017-09-18 13:01:27 +08:00
    @qq7588245 我大概明白你的意思了。。。我觉得是 Session 锁的问题,你尝试在运行采集线程的时间开一个新的浏览器去访问其他 url,应该是没问题的,同一个 session 在 php 默认配置下只能同时访问一个网页
    dlllcs
        16
    dlllcs  
       2017-09-18 13:02:16 +08:00
    @qq7588245 还有一种可能性是你用的是 php 自带的 php -S 服务器。。。这个不在讨论范围
    qq7588245
        17
    qq7588245  
    OP
       2017-09-20 08:54:34 +08:00
    @dlllcs 对 应该就是这个锁的问题 怎么解决好呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4981 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:42 · PVG 17:42 · LAX 02:42 · JFK 05:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.