kk941kk
V2EX  ›  PHP

PHP 处理大量数据的效率问题。

  •  
  •   kk941kk · May 3, 2017 · 5788 views
    This topic created in 3483 days ago, the information mentioned may be changed or developed.

    有一张 30W 用户的数据表,里面有用户的手机号码,我需要通过一个 API 查询到手机号的归属地和运营商信息,然后修改到数据库。 目前我做的是循环查询修改,这样效率很低,每秒平均 6 条左右,求推荐效率高的办法,谢谢~~

    18 replies  •  2017-05-10 20:24:08 +08:00
    huijiewei
    huijiewei
    May 3, 2017
    1
    这个和 PHP 没关系,明显是网络请求占用时间,API 支持批量查询吗,支持就分批搞
    kslr
    kslr
    May 3, 2017
    2
    你的 api 支持更快地查询吗? 可以从并行/异步下手。
    kk941kk
    kk941kk
    OP
    May 3, 2017
    3
    @huijiewei 不支持啊,只能一条条查出来
    kk941kk
    kk941kk
    OP
    May 3, 2017
    4
    @kslr api 不支持,也改不了,只能自己想办法了,您说的我再查一查
    gouchaoer
    gouchaoer
    May 3, 2017❤️1
    5
    php 有最好的 httpclient 是 Guzzle,你可以批量发请求去访问 api,注意使用 php-cli。。。我查询几十个 ip 的归属地,ipip.net 不支持批量查询,用 Guzzle 的话几 s 内返回吧
    kslr
    kslr
    May 3, 2017
    6
    @kk941kk #4 看下这个项目有没有帮助

    https://github.com/shitoudev/phone-location
    用这份 17 年数据验证下 https://github.com/xluohome/phonedata
    kk941kk
    kk941kk
    OP
    May 3, 2017
    7
    @gouchaoer 谢谢,我去试试~
    Immortal
    Immortal
    May 3, 2017
    8
    对的 如果 api 不支持批量就自己建立并发去查询
    jugelizi
    jugelizi
    May 3, 2017
    9
    可以一次性查几十条出来然后在也页面用 js 批量去查询并更新
    一批查完就执行下一批
    we3613040
    we3613040
    May 3, 2017
    10
    多任務,多進程或多線程
    php300
    php300
    May 3, 2017
    11
    .......
    byfar
    byfar
    May 3, 2017❤️1
    12
    1.25 小时过去了,应该跑了 3w 条了吧,14 个小时之前答题都还有点用

    写一个 php 脚本 每次查一条未更新过的更新,直到没有数据退出

    运行多个这个脚本,ok
    lslqtz
    lslqtz
    May 3, 2017
    13
    并发。
    asen477
    asen477
    May 3, 2017
    14
    写个存储过程,直接调用存储过程。
    wombat
    wombat
    May 3, 2017
    15
    表里数据应该有 id 吧,利用 id%某值,写多个脚本,同时执行
    sagaxu
    sagaxu
    May 3, 2017
    16
    @gouchaoer 高级爬虫工程师靠谱
    kk941kk
    kk941kk
    OP
    May 4, 2017
    17
    昨天中途去忙别的了,现在用的是 @kslr 的方法,谢谢大家的帮助~~
    lygmqkl
    lygmqkl
    May 10, 2017
    18
    用 cli 命令行跑,或者换 其它语言跑,以数据库为分界点。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1894 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 07:04 · PVG 15:04 · LAX 23:04 · JFK 02:04
    ♥ Do have faith in what you're doing.