2

マルチスレッド ソケット アプリケーションをセットアップしようとしましたがpcntl_fork()、デフォルトで無効になっているため、実行するたびにエラーが発生しました。危ないからとか不安定だから?マルチスレッドの他の方法を探す必要がありますか、それともあまり使用されていないために無効になっているだけですか?

4

2 に答える 2

2

pcntl_fork()マルチスレッド用ではありません。それは...まあ、現在のプロセスをフォークします。関数の詳細については、必ずドキュメントを確認してください。

デフォルトで無効になっていると考えることができる最大の理由は、PHP が並列コンピューティングを意図したものではなく、単なるスクリプト言語 (非常に強力な言語) であるためです。マーティンが同様の質問で彼の答えを提案したように、CRON または別のプログラムを実行したほうがよいでしょう。

于 2013-05-07T19:42:18.170 に答える
0

これは単純に、平均的な共有ホスティング Apache 環境では使用すべきではない機能です。そこでフォークすると、かなり大きなプロセスが複製される可能性があります。さらに、機能が悪用されて、構成が不十分なサーバーがダウンする可能性があります (フォーク爆弾)。

たとえば、コマンドライン ベースの PHP スクリプトで使用してもまったく問題ありません。

于 2013-05-07T19:42:19.793 に答える