jQuery POST 多线程延迟
Posted
技术标签:
【中文标题】jQuery POST 多线程延迟【英文标题】:jQuery POST multithreaded delays 【发布时间】:2017-10-05 01:06:39 【问题描述】:我正在使用 php 代码中的多线程 POST 请求。
由于这些请求可能需要很长时间,我决定对这些 POST 请求进行多线程处理,以通过使用多个连接来更快地完成任务。
此时我用 javascript 编写了调度程序,它执行对 request_helper.php 的 POST 请求(使用 jQuery post 命令),并观察当时是否有多达 4 个待处理的请求。理论上我可以快 4 倍地获取数据。
我开始使用 request_helper.php 的内容:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');
sleep(20);
exit (0);
?>
同时运行 4 个 POST 请求。 20 秒后,我收到了 4 个 POST 响应。太好了!
但是,如果我添加 start_session() - 我需要检查用户是否有权限:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');
// always load or start session
session_start();
sleep(20);
exit (0);
?>
第一个请求的响应需要 20 秒,但第二个 - 40 秒,第三个 3 秒 - 看起来 session_start 可以同时处理一个请求。我实际上失去了多线程。
为什么会发生这种情况,如何做得更好?
【问题讨论】:
【参考方案1】:您可以通过这种方式使用会话,但您需要在发送下一个请求之前解锁会话。
session_write_close();
应该这样做。
【讨论】:
以上是关于jQuery POST 多线程延迟的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 多线程 (Windows/.NET) 从视频捕获延迟几秒钟
多线程 - Swift 中的 DispatchQueue asyncAfter 延迟