2017-05-08 129 views
0

我需要执行一个PHP脚本而不会阻止用户界面。异步脚本执行PHP

看看这个(光)例如:

<?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\r\n"); 
      fclose($t); 
     } 
?> 

这个例子需要被执行了太多的时间,如何使它异步和重定向用户不用其他接口等待???

+0

为什么你不使用jquery/ajax? – dehood

+0

你想完成什么?有多种方法可以解决这个问题 – d3L

+0

我需要在数据库中写一些东西(position:wait),重定位到另一个显示等待进程的页面,如果进程正常,用ajax测试,如果没问题,在数据库成功而不是等待中写入在用户界面中取代成功等待。 – Azee

回答

0

我发现谁做什么,我需要一个脚本,但我不明白:

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\r\n"); 
header("Content-Length: 0", true); 

flush(); 
ob_flush(); 

session_write_close(); 

// Continue processing... 

sleep(100); 
exit; 

有人能解释一下吗?

+0

当使用PHP的默认'会话处理器'时,会话存储在一个文件中,因此创建一个文件锁请求正在处理中。通过使用'session_write_lock'关闭会话,您关闭文件锁,并且您可以启动第二个请求,而无需等待第一个请求完成 – DarkBee

+0

为什么是负面投票? – Azee

+0

这是一个不错的问题? – Azee