5

スクリプトでユーザーをできるだけ早くリダイレ​​クトし、ユーザーがリダイレクトされた後もデータの処理を続行する必要があります。私はグーグルでこれを見つけましたが、うまくいきません。リダイレクトする前に 10 秒間待機します。ブラウザが直接アクセスできるようになる前に、ユーザーはスクリプトが終了するまで待つ必要があるようです。

<?PHP
 store data
 $userAgent = $_SERVER['HTTP_USER_AGENT'];
 $user_ip=$_SERVER['REMOTE_ADDR'];

 //Redirect to google
 header("Location: http://www.google.com");
 //Erase the output buffer
 ob_end_clean();
 //Tell the browser that the connection's closed
 header("Connection: close");

 //Ignore the user's abort (which we caused with the redirect).
 ignore_user_abort(true);

 //Extend time limit to 30 minutes
 set_time_limit(1800);
//Extend memory limit to 10MB
ini_set("memory_limit","10M");
//Start output buffering again
ob_start();

//Tell the browser we're serious... there's really
//nothing else to receive from this page.
header("Content-Length: 0");

//Send the output buffer and turn output buffering off.
ob_end_flush();
//Yes... flush again.
flush();

//Close the session.
session_write_close();

//After redirection no need to send any data to user anymore.
//User would It's seem that user need to wait till script is finish before browser can be direct.
//Do some work 
//sleep(10);
$matched = $wurflObj->getDeviceCapabilitiesFromAgent($userAgent);
$org = geoip_org_by_name($user_ip);

?>
4

4 に答える 4

0

待っているのは回線のためですsleep(10)。それを取り除くと、期待どおりの速度になるはずです。

于 2012-08-05T17:56:11.503 に答える
0

コードのsleep(10)終わり近くが原因である可能性があります

作業をバックグラウンドで実行したい場合は、いくつかのオプションがあります。

おそらく最良の方法は、クライアント サイトから AJAX を使用して重い PHP スクリプトを実行し、終了時に結果を返すことです。

PHP だけでは、思い通りに非同期処理を行うことはできません。

于 2012-08-05T17:56:25.043 に答える
-1
 Sleep(10)

10秒の待機を引き起こしています。そこで何をしているのかさえわかりません。しかし、それを取り除けば大丈夫です!

「何か仕事をしている」の例として、10秒の待機があったと思います。

于 2012-08-05T18:00:43.343 に答える