可以在收到所有 POST 数据之前启动 PHP 脚本吗?
Posted
技术标签:
【中文标题】可以在收到所有 POST 数据之前启动 PHP 脚本吗?【英文标题】:Can a PHP script start before all POST data is received? 【发布时间】:2011-04-26 03:09:51 【问题描述】:我在 Apache 下运行 php,我想向页面发送缓慢的 POST 数据,当 POST 数据到达时,该页面将消息写入数据库。我正在使用 WebRequest
从 .NET 应用程序发送数据,并将 SendChunked
设置为 true。
不幸的是,在所有 POST 数据到达之前,PHP 脚本似乎不会开始执行。我查看了 apache 日志,发现请求立即开始,但 PHP 脚本中的 echo strftime(...)
语句显示它直到收到所有 POST 数据后才运行。
有没有办法让 PHP 立即启动?我尝试在 PHP.ini 文件中设置always_populate_raw_post_data = Off
,但这没有任何区别。我的请求的内容类型为application/octet-stream
,而$HTTP_RAW_POST_DATA
仍然填充了所有的POST 数据。
【问题讨论】:
【参考方案1】:您可以使用 HTTP PUT 方法执行此操作,但不能使用 POST。
当客户端使用 PUT 动词时,数据会流式传输到 PHP。可以通过php:://input
流逐字节访问,因为它是从客户端发送过来的。
【讨论】:
以上是关于可以在收到所有 POST 数据之前启动 PHP 脚本吗?的主要内容,如果未能解决你的问题,请参考以下文章
php 页脚之前的Hook Newsletter小部件区域。