PHP-echo-before-exec()

PHP-echo-before-exec(),php,exec,echo,Php,Exec,Echo,你好 在执行exec()之前,让echo语句输出有一些问题 发生这种情况是因为脚本将在任何结果/输出发送到浏览器之前完整运行。发生这种情况是因为脚本将在任何结果/输出发送到浏览器之前完整运行。这可能是输出缓冲区的问题。PHP缓冲输出并将其分块写入浏览器。尝试在echo和exec()之间添加对的调用;这将迫使PHP将缓冲区的当前内容写入浏览器。这可能是输出缓冲区的问题。PHP缓冲输出并将其分块写入浏览器。尝试在echo和exec()之间添加对的调用;这将迫使PHP将缓冲区的当前内容写入浏览器。在P

你好

在执行exec()之前,让echo语句输出有一些问题


发生这种情况是因为脚本将在任何结果/输出发送到浏览器之前完整运行。

发生这种情况是因为脚本将在任何结果/输出发送到浏览器之前完整运行。

这可能是输出缓冲区的问题。PHP缓冲输出并将其分块写入浏览器。尝试在echo和exec()之间添加对的调用;这将迫使PHP将缓冲区的当前内容写入浏览器。

这可能是输出缓冲区的问题。PHP缓冲输出并将其分块写入浏览器。尝试在echo和exec()之间添加对的调用;这将迫使PHP将缓冲区的当前内容写入浏览器。

在PHP中有一个“输出缓冲”的概念

无论何时输出内容(例如使用
echo
打印
等),文本都会被放入缓冲区。此缓冲区仅在特定时间发送(例如,在请求结束时或缓冲区已满时)

为了清空缓冲区(刷新缓冲区),您需要手动执行。函数将执行此操作。有时还需要调用(如果您自己打开了自定义输出缓冲区)。通常,只调用这两个函数并使用它们是一个好主意:

echo 'Wait a few seconds...';
flush(); ob_flush();
sleep(3);
echo ' aaand we are done!';

有关PHP中输出缓冲的更多信息,请参阅。

在PHP中,有一个“输出缓冲”的概念

无论何时输出内容(例如使用
echo
打印
等),文本都会被放入缓冲区。此缓冲区仅在特定时间发送(例如,在请求结束时或缓冲区已满时)

为了清空缓冲区(刷新缓冲区),您需要手动执行。函数将执行此操作。有时还需要调用(如果您自己打开了自定义输出缓冲区)。通常,只调用这两个函数并使用它们是一个好主意:

echo 'Wait a few seconds...';
flush(); ob_flush();
sleep(3);
echo ' aaand we are done!';

有关PHP中输出缓冲的更多信息,请参阅。

默认情况下,PHP在PHP脚本完全运行之前不会发送任何输出。有一个解决办法。不过,我听说它有点依赖于浏览器。我会在不同的系统和浏览器上测试它,看看它是否正常工作:

ob_implicit_flush (true)
把它放在任何echo/print命令之前,这样就可以在浏览器上显示任何打印的内容


更通用的方法是将页面与异步javascript集成。通常称为“AJAX”的过程。这有点困难,因为它需要使用许多交互脚本,一些是客户端脚本,一些是服务器端脚本。但是,AJAX是在web上执行类似操作的实际方式。

默认情况下,php在php脚本完全运行之前不会发送任何输出。有一个解决办法。不过,我听说它有点依赖于浏览器。我会在不同的系统和浏览器上测试它,看看它是否正常工作:

ob_implicit_flush (true)
把它放在任何echo/print命令之前,这样就可以在浏览器上显示任何打印的内容



更通用的方法是将页面与异步javascript集成。通常称为“AJAX”的过程。这有点困难,因为它需要使用许多交互脚本,一些是客户端脚本,一些是服务器端脚本。但是,AJAX是在Web上这样做的事实上的方法。

作为后续,您可以考虑在您的PHP脚本完成之前,使用JavaScript编写您的消息。我有PHP文件,当您调用ECHO时,它将打印正确,但我不知道如何。我想某些标题被发送了?@DamienBlack整个脚本执行了多长时间?几分钟后,它会随着我的回应而更新。。。这是在一个框架中,但没有任何javascript。“发生这种情况是因为脚本将在任何结果/输出发送到浏览器之前完整运行。”我不认为这是真的。作为后续,你可以考虑使用JavaScript在你的PHP脚本完成之前编写你的消息。我有PHP文件,在你调用ECHO之前,它会打印正确的,但是我不知道如何。我想某些标题被发送了?@DamienBlack整个脚本执行了多长时间?几分钟后,它会随着我的回应而更新。。。这是在一个框架中,但没有任何javascript。“发生这种情况是因为脚本将在任何结果/输出发送到浏览器之前完整运行。”我不认为这是真的。可能最好运行Ajax请求。这一点很好。否则,当exec()语句运行.Yep时,用户将坐在那里,只下载了一半的页面。不幸的是,你会在刷新时遇到跨浏览器的问题。只是好奇:你有什么链接可以解释这一点吗?我以前没听说过这个。当然,无论如何,我很少使用ob_flush(),但很高兴知道……上次我在处理flush时,我看到人们在争论什么浏览器(以及什么版本)可以做什么(更不用说关于某些PHP/服务器设置的争论)。这足以让我放弃它,转而使用Ajax。运行Ajax请求可能更好。这一点很好。否则,当exec()语句运行.Yep时,用户将坐在那里,只下载了一半的页面。不幸的是,你会在刷新时遇到跨浏览器的问题。只是好奇:你有什么链接可以解释这一点吗?我以前没听说过这个。当然,无论如何,我很少使用ob_flush(),但很高兴知道……上次我在处理flush时,我看到人们在争论什么浏览器(以及什么版本)可以做什么(更不用说关于某些PHP/服务器设置的争论)。这足以让我放弃它,转而使用Ajax