异步脚本执行PHP

I need to execute a PHP script without blocking user interface.

Look this (light) example :

<?php
   echo "user see this";
   header("Location:otherpage.php");

        sleep(10);
        for($i=1; $i < 100000; $i++){
            $t = fopen("test.txt", "a+");
            fwrite($t, "$i
");
            fclose($t);
        }
?>

This example need too much time to been executed, how to make it asynchronous and redirect the user witout interface waiting ???

dongzhi4498
dongzhi4498 如果您能够将php会话ID发送到新进程,那么您可以恢复特定会话
3 年多之前 回复
douchui1488
douchui1488 是的,这是我的个人服务器!有了这种类型的命令,我可以访问$_SESSION用户启动后台进程???
3 年多之前 回复
donglei2288
donglei2288 这是一个不使用上述功能的例子:php.net/manual/de/features.connection-handling.php#93441。
3 年多之前 回复
duanrong6802
duanrong6802 您是否可以访问PCNTL函数,如pcntl_fork()或system()/exec()/proc_open()?
3 年多之前 回复
duanji1482
duanji1482 我需要在数据库中写一些东西(位置:等待),重新定位到显示等待进程的另一个页面,如果进程正常,则使用ajax进行测试,如果正常,则在数据库成功而不是等待中写入,并在用户界面中替换等待成功。
3 年多之前 回复
dongzhaoshi8497
dongzhaoshi8497 你想要完成什么?有多种方法可以解决这个问题
3 年多之前 回复
douzhouhan4618
douzhouhan4618 为什么不使用jquery/ajax呢?
3 年多之前 回复

1个回答



我发现了一个制作我需要的剧本,但我不明白:</ p>

  ignore_user_abort(true); 
set_time_limit(0);

$ strURL =“把你的REDIRCT放在这里”;
header(“Location:$ strURL”,true);
header(“Connection:close” ,true);
header(“Content-Encoding:none

”);
header(“Content-Length:0”,true);

flush();
ob_flush();

session_write_close ();

//继续处理...

sleep(100);
exit;
</ code> </ pre>

有人可以解释一下吗?</ p>

</ div>

展开原文

原文

I found a script who made what I need, but I don't understand it :

    ignore_user_abort(true);
set_time_limit(0);

$strURL = "PUT YOUR REDIRCT HERE";
header("Location: $strURL", true);
header("Connection: close", true);
header("Content-Encoding: none
");
header("Content-Length: 0", true);

flush();
ob_flush();

session_write_close();

// Continue processing...

sleep(100);
exit;

Someone can explain ?

dpvhv66448
dpvhv66448 您收到了一个downvote,因为您应该创建一个新问题而不是在答案中提出新问题。 不过这里有一个解释:pastebin.com/KAVWbxmJ。
3 年多之前 回复
dongzhazhuo0572
dongzhazhuo0572 这是一个很好的问题吗?
3 年多之前 回复
du13520157325
du13520157325 为何投反对票???
3 年多之前 回复
douzhu3654
douzhu3654 当使用PHP中的默认会话处理程序时,会话存储在文件中,从而在处理请求时创建文件锁。 通过使用session_write_lock关闭会话,您可以关闭文件锁,并且您可以启动第二个请求,而无需等待第一个请求完成
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问