1

サーバーで個別の php プロセスを実行したいのですが、プロセスは個別に動作しますが、このテストを実行すると、サイトの残りの部分はすべて機能しません。つまり、サイト全体が彼の終了を待っています。

私が使用する場合:

    ignore_user_abort(真);
    set_time_limit(0);

    while(真)
    {
        スリープ(10);
    }

上記のコードは完全に機能しますが、レジストリ、コントローラー、およびデータベース ドライバーを含めると、サイトの残りの部分が待機状態になります。

例えば:

    ignore_user_abort(真);
    set_time_limit(0);

    //レジストリ、コントローラ、DB など

    while(真)
    {
        //コード[...]
        スリープ(10);
    }

4

1 に答える 1

6

セッションを使用する場合は、php のセッション ロック モデルをよく読んでください。特に を参照してくださいsession_write_close()

また、使用可能なワーカー プロセスまたはスレッドの数が非常に多いため、Web サーバーの制限がある場合もあります。多くの Web サーバーがあり、PHP をインストールする方法もたくさんありますが、いずれにせよ、ワーカー プールを使い果たすと、sleep() などの長時間かかる処理を行うと、Web サーバーがハングします。

一般に、実行時間の長いスクリプトは、Web サーバーから完全に除外する必要があります。このようなことを行う別のバックグラウンド プロセスを記述します。

于 2013-06-30T19:58:21.410 に答える