私は周りを検索しましたが、共有ホスティングのほとんどで機能しない set_time_limit(0) 以外の解決策を見つけることができませんでした。
基本的に、ユーザーの友達が必要なときにメッセージを送信するスクリプトがあります。一部のユーザーには 4000 人以上の友達がいて、スクリプトに問題が発生しています。
現在、AJAX を使用してバックグラウンドでこのスクリプトを呼び出しています。この終了までユーザーを待つ必要がない/したくないので、何らかのバックグラウンド処理が必要です。
私の現在のコード:
global $client, $emails, $subject, $message;
_info("got on_auth_success cb, jid ".$client->full_jid->to_string());
$client->set_status("available!", "dnd", 10);
set_time_limit(60*10);
if( count($emails) < 40 ){
foreach( $emails as $email )
{
$msg = new XMPPMsg(array('to'=>'-'.$email.'@chat.facebook.com'), $message);
$client->send($msg);
sleep(1);
}
}
else
{
$counter = 0;
//Lets create batches
foreach( $emails as $email )
{
$counter++;
$msg = new XMPPMsg(array('to'=>'-'.$email.'@chat.facebook.com'), $message);
$client->send($msg);
sleep(1);
if( $counter == 50 )
{
sleep(10);
$counter = 0;
}
}
}
$client->send_end_stream();
exec を使用する良い解決策でしょうか? たとえば
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
これは任意のホストにインストールできる wordpress プラグインであるため、ほとんどのホスティングで機能するソリューションが必要です。ありがとう!