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) 从视频捕获延迟几秒钟

Win32 API 多线程播放 .wav 文件没有延迟

多线程 - Swift 中的 DispatchQueue asyncAfter 延迟

多线程场景下延迟初始化的策略

Cassandra java驱动程序 - 使用多线程提取数据时的高延迟

多线程单例模式之延迟加载(懒汉模式)