我ob_flush()和flush()两个人之间有什么区别?
该ob_flush()参考说:
此函数将发送输出缓冲区的内容(如果有).
该flush()参考说:
刷新PHP的写缓冲区以及PHP正在使用的任何后端(CGI,Web服务器等).
但是,它继续说:
[它]可能无法覆盖您的Web服务器的缓冲方案......
所以,在我看来,我可以只使用ob_flush()所有的时间.但是,当我这样做时,我得到了奇怪的结果.有人可以用简单的语言解释这里发生了什么吗?
我已经阅读了很多关于使用jQuery取消POST请求的类似问题,但似乎没有一个与我的接近.
我有你的日常表单,有一个PHP页面作为一个动作:
<form action="results.php">
<input name="my-input" type="text">
<input type="submit" value="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
处理results.php在服务器端,基于形式给出的职位信息,需要很长的时间(30秒甚至更多,我们预计同比增长,因为我们的搜索空间将在未来几周内增加以及).我们正在访问包含所有数据的Basex服务器(版本7.9,不可升级).用户生成的XPath代码以表单形式提交,然后操作URL将XPath代码发送到返回结果的Basex服务器.从可用性的角度来看,我已经显示了一个"加载"屏幕,因此用户至少知道正在生成结果:
$("form").submit(function() {
$("#overlay").show();
});
<div id="overlay"><p>Results are being generated</p></div>
Run Code Online (Sandbox Code Playgroud)
但是,我还想让用户选择按下按钮取消请求,并在用户关闭页面时取消请求.请注意,在前一种情况下(按钮单击),这也意味着用户应该保持在同一页面上,可以编辑他们的输入,并立即重新提交他们的请求.最重要的是,当他们取消请求时,他们也可以立即重新发送它:服务器应该真正中止,并且在能够处理新查询之前不完成查询.
我想到这样的事情:
$("form").submit(function() {
$("#overlay").show();
});
$("#overlay button").click(abortRequest);
$(window).unload(abortRequest);
function abortRequest() {
// abort correct request
}
<div id="overlay">
<p>Results are being generated</p>
<button>Cancel</button>
</div>
Run Code Online (Sandbox Code Playgroud)
但正如您所看到的,我并不完全确定如何填写abortRequest以确保后续请求被中止和终止,以便可以发送新查询.请填写空白!或者我需要.preventDefault()提交表单,而是从jQuery执行ajax()调用?
正如我所说,我也想停止进程服务器端,从我读到的我需要exit()这个.但是我怎么能有exit另外一个PHP函数呢?例如,假设results.php我有一个处理脚本,我需要退出该脚本,我会这样做吗?
<?php
if (isset($_POST['my-input'])) {
$input = $_POST['my-input'];
function processData() { …Run Code Online (Sandbox Code Playgroud)