xing393939
V2EX  ›  PHP

php有什么简单方法可以延后处理任务的

  •  
  •   xing393939 · Feb 27, 2013 · 6079 views
    This topic created in 5004 days ago, the information mentioned may be changed or developed.
    比如ajax请求一个php
    需要返回success和curl一个接口(后续任务)
    但是curl很耗时,弄的ajax请求时间很长
    能不能先返回success了,再继续处理curl,简单点的不损耗性能的
    14 replies  •  1970-01-01 08:00:00 +08:00
    nigelvon
    nigelvon
    Feb 27, 2013
    1
    用fputs请求需要后续处理的php 脚本,同时返回success。这样是不需要等待脚本完成的。
    lyxint
    lyxint
    Feb 27, 2013
    2
    gearman
    twm
    twm
    Feb 27, 2013
    3
    queue
    jerry
    jerry
    Feb 27, 2013
    4
    fpm 的 fastcgi_finish_request
    xing393939
    xing393939
    OP
    Feb 27, 2013
    5
    @jerry 这个好是好,可惜只能是fpm模式
    HowardMei
    HowardMei
    Feb 27, 2013
    6
    这个简单不了吧, Reactphp /t/59502
    fkccp
    fkccp
    Feb 27, 2013
    7
    ajax请求两个地址,一个success,一个做后续
    Cadina
    Cadina
    Feb 27, 2013
    8
    异步队列,一般的云计算服务都有
    AlloVince
    AlloVince
    Feb 27, 2013
    9
    laputa7
    laputa7
    Feb 27, 2013
    10
    可以设置CURLOPT_TIMEOUT_MS,但是对curl与php的版本有要求,或者队列。
    yayanet
    yayanet
    Feb 27, 2013
    11
    简单处理可以这样
    exec("php script.php p1 p2 p3 > /tmp/result.out &")
    qq286735628
    qq286735628
    Feb 27, 2013
    12
    PHP自带有flush模块
    http://www.php.net/manual/zh/book.outcontrol.php

    把php脚本的生命周期延长,然后利用flush()来分段输出
    Asimov
    Asimov
    Feb 27, 2013
    13
    把要处理的任务列表写入数据库。然后用crontab来定时执行要处理的东西。这是不用学习新的东西最简单有效果的方法。
    justplaymore
    justplaymore
    Apr 28, 2013
    14
    一种是队列,另一种是用输出控制,ob_flush,队列的性能更好,因为是异步的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2452 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 12:09 · PVG 20:09 · LAX 04:09 · JFK 07:09
    ♥ Do have faith in what you're doing.