これが私の問題です。ユーザーが自分のデータをソーシャルネットワークと同期できるようにするアプリケーションがあります。問題は、各同期に最大10秒かかる可能性があることです。したがって、「バックグラウンド」タスクで同期をトリガーし、可能であればすべての同期を並列化します。
現在、私のスクリプトは次のようになっています。
$user = user::login($username, $password);
/* Do some treatments, display the home page */
$user->synchronize();
/* END OF LOGIN SCRIPT */
そして私のuser.class.phpには、次のようなものがあります
public function synchronize(){
$Networks = socialNetworks::getByUserId($this->userid);
foreach($Networks as $n) $n->synchronize();
}
そして最後に、socialNetworks.class.phpで、各ソーシャルネットワーク(fb、linkedin、google +、...)のすべての同期スクリプトを実装しました。
ログイン時に同期の結果を待つ必要がないことに注意してください。
だから私はここで2つの問題があります:
- $ user-> synchronize();を呼び出すとき。ログインスクリプトは、ループが終了するまでブロックされます
- ループ自体は非常に長いので、synchronize()メソッドを呼び出すときに高速化するために並列の「スレッド」を起動したいと思います(このアクションをトリガーするAjaxがいくつかあります)。
これを最適化するために何を提案しますか?
ありがとう。