drahywu329376 2016-05-25 14:46
浏览 29
已采纳

在回应响应后睡觉

I have an API endpoint which performs an action based on a user's request, and then echoes a json response. This endpoint also needs to trigger a notification, but only after a 30 second delay. The reason is in case the user reverses their request within that delay (via another endpoint), which would would mean no notification should be sent. Here's the relevant piece of code:

// response
echo json_encode(
    array(
        'success' => 1,
        'updateUser' => $updateUser['ok'],
        'updateTarget' => $updateTarget['ok'],
        'updateActivity' => $updateActivity['ok']
    )
);

// send push notification after delay
sendDelayedNotification($user_id, $target_id);

The sendDelayedNotification function has sleep(30) in it to delay its execution. The function then checks if the condition still exists that warrants a notification.

The issue is that even though this function fires after the echo statement, it delays the response and the request times out. Is there a way to code this so that the response isn't delayed?

  • 写回答

2条回答 默认 最新

  • doushenmao9036 2016-05-25 14:53
    关注

    Don't do the job in the same script. The response for your php script won't send until the entire script has finished running.

    You will need to have a different script to send notifications. Have your response set a database record or create a file or something with the time of the initial request. The notification script would scan the location and send the notifications as appropriate. Your cancel endpoint would delete/modify the record so that the notification script won't execute.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程