PHP Curl 输出缓冲区未收到响应

2024-02-14

我有一个协议,其中 file1.phpcurl 运行 file2.php。 file2.php 是一个长时间运行的文件,但它发送(或应该发送)一个响应回 file1.php,然后继续执行它的代码。我正在使用输出缓冲区来尝试发送此数据,但问题是如果我“返回;”冲洗后立即; file1.php 接收响应很好,但是当我尝试保持 file2.php 运行时,file1.php 永远不会接收响应,我做错了什么?有没有其他方法可以将响应发送回 file1.php?

// file1.php
    $url = "file2.php"

    $params = array('compurl'=>$compurl,'validatecode'=>$validatecode);

    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => true,     // return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "Mozilla", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        CURLOPT_TIMEOUT        => 10,       // don't wait too long
        CURLOPT_POST           => true,     // Use Method POST (not GET)
        CURLOPT_POSTFIELDS     => http_build_query($params)
    );
    $ch = curl_init($url);

    curl_setopt_array( $ch, $options );
    $response = curl_exec($ch); 
    curl_close($ch);
    echo $response;

// file2.php
ob_start();
echo 'Running in the background.';

// get the size of the output
$size = ob_get_length();

header("HTTP/1.1 200 OK"); // I have tried without this
header("Date: " . date('D, j M Y G:i:s e')); // Tried without this
header("Server: Apache"); // Tried without this
header('Connection: close');
header('Content-Encoding: none');
header("Content-Length: $size");
header("Content-Type: text/html"); // Tried without this

// flush all output
ob_end_flush();
ob_flush();
flush();

// If I add return; here file1.php gets the response just fine
// But I need file2.php to keep processing stuff and if I remove the
// return; file1.php never gets a response.

在正常的卷曲传输中,在页面完成加载之前,您将无法获取数据。你的脚本已经完成了。如果您想使用部分数据,您应该查看 CURLOPT_WRITEFUNCTION 。这将创建一个回调,只要有任何数据可用,您就可以使用该回调。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP Curl 输出缓冲区未收到响应 的相关文章

随机推荐

  • 字节码是否被视为 JVM 的指令集?

    我正在读关于instruction set in wiki http en wikipedia org wiki Instruction set我看到了这一段 一些支持字节码作为 ISA 的虚拟机 例如 Smalltalk Java 虚拟机
  • ChannelOption.SO_BACKLOG 的作用是什么?

    option ChannelOption SO BACKLOG 100 Netty 4 升级文档中显示 你能解释一下它的作用吗 Thanks 它是一个传递的套接字选项 用于确定排队的连接数 http docs oracle com java
  • 在 C# 中去除 wav 标头

    我希望能够从 wav 文件中去掉标题 在 C 中有什么办法可以做到这一点吗 WAV 文件使用标准 RIFF 标头格式 看例子在这里 http www codeproject com KB files riffparser aspx 您可以使
  • CoreData 查询帮助

    我正在寻找在 CoreData 中编写一些基本查询的方法 但文档中没有示例 以下是我的查询 我有一个费用对象 它有一个费用金额字段 费用可以链接到 ExpenseCategory 对象 ExpenseCategory 可能仅定义费用类别 例
  • 我们可以使用 nlmrt 包中的 nlxb 进行预测吗?

    我问这个问题是因为我不明白为什么nlxb拟合函数不能与 Predict 函数一起使用 我一直在寻找解决这个问题的方法 但到目前为止还没有运气 I use dplyr对数据进行分组并使用do适合每个组使用nlxb from nlmrt包裹 这
  • 三.js:纹理到数据纹理

    我正在尝试在 JavaScript 中实现延迟网络摄像头查看器 使用 Three js 实现 WebGL 功能 我需要存储从网络摄像头抓取的帧 以便在一段时间 几毫秒到几秒 后显示它们 我可以在没有 Three js 的情况下使用canva
  • 适用于所有 x64 平台的 gcc 通用 March

    海湾合作委员会有 march and mtune如上所述的选项here http gcc gnu org onlinedocs gcc i386 and x86 002d64 Options html 但选择哪个选项并不明显x64平台作为通
  • Docker:无法建立连接,因为目标机器主动拒绝

    此处显示错误 https i stack imgur com fe1lz png我尝试了很多方法 例如重新安装 Docker 更改 DNS 服务器 重新启动 Windows 但没有任何效果 无法在本地 docker 中找到图像 hello
  • 如何将 Base64 字符串转换为图像,然后将其绑定到 Metro 风格应用程序中的 GridView?

    我从 Web 服务收集了产品 我在网格视图中预览该产品 但我以 Base64 字符串形式获取产品图像 如何将其转换为图像并将其绑定到网格视图中的图像 任何对我解决这个问题有帮助的代码 这似乎对我有用 public static Bitmap
  • Facebook iFrame 应用程序 - 如何使用 PHP SDK 获取 Preload FQL 结果?

    几年来我有一个 FBML 应用程序 一个小的Flash游戏 http apps facebook com video preferans 我现在正在尝试将其转换为 iFrame 应用程序 不幸的是 目前还没有太多关于 Facebook iF
  • C# 泛型类型约束

    这不应该是有效的 C 代码吗 class A
  • 如何统计coredata(聚合)?

    我正在学习核心数据 特别是聚合 目前我想做的事 计算表中在某些条件下具有逆向关系的多对关系的记录数 目前我正在这样做 NSExpression ex NSExpression expressionForFunction count argu
  • 如何检查电子邮件地址是否已在使用 Firebase

    正在研究一些FirAuth的事情 但由于某种原因 我不知道如何检查用户建议的电子邮件地址是否已被占用 我试过打电话 fetchProvidersForEmail正如不久前其他问题中所建议的那样 但无论出于何种原因 它都行不通 另外 我对完成
  • 将 3rd 方 Java 库(例如 com.jcraft.jsch)与 clojure 结合使用

    我正在尝试clojure http www clojure org我正在尝试了解如何使用第三方库 我已经能够下载一些源代码 使用 leiningen 将其捆绑到 jar 文件中 将其放入我的类路径中并在我的脚本中 使用 lib etc 我还
  • VS 2015导入和导出设置,消失的窗口

    帖子已更新 03 05 2017 人们在这里讨论这个问题 VS 2010 导入导出设置 https stackoverflow com questions 3624073 vs 2010 import export settings VS2
  • 在 JavaScript 中解码 HTML 实体? [复制]

    这个问题在这里已经有答案了 转换示例 amp gt gt gt gt 有什么小的库函数可以处理这个问题吗 我的实用腰带上总是有这个小功能 function htmlDecode input var e document createElem
  • 在 C/C++ 中读/写半字节(无位字段)

    有没有一种简单的方法可以在不使用位字段的情况下读取 写入字节中的半字节 我总是需要读取两个半字节 但需要单独写入每个半字节 Thanks 使用面膜 char byte byte byte 0xF0 nibble1 0xF write low
  • 限制 WAMP 文件系统访问

    我的 PC 上安装了 WAMP 堆栈 昨天 我正在使用 PHP 处理文件系统 并注意到我可以访问硬盘中的任何目录 甚至可以访问网站文档根目录之上的目录 这是一个我想避免的明显的安全问题 目前 我在 WAMP 堆栈中使用多个虚拟主机以及使用主
  • 使用 -deprecation 运行 SBT

    我的 project build scala 文件中似乎有警告 不在我的 Scala 项目中 如何配置 SBT 来运行 deprecation flag Does not help so do not suggest it scalacOp
  • PHP Curl 输出缓冲区未收到响应

    我有一个协议 其中 file1 phpcurl 运行 file2 php file2 php 是一个长时间运行的文件 但它发送 或应该发送 一个响应回 file1 php 然后继续执行它的代码 我正在使用输出缓冲区来尝试发送此数据 但问题是