問題タブ [pcntl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
30357 参照

php - Ubuntu PHP で PCNTL を有効にする - テストが失敗する

Ubuntu PHP で PCNTL を有効にする方法に関するヘルプが必要です。

phpizeを実行しようとするまで、すべてがうまくいきました! そして、「-bash:phpize:コマンドが見つかりません」というエラーが表示されます?? 何か案は?

更新が実行されました:

そして実行しました:

ニックの助けを借りて、なんとか手続きを終えることができました。しかし、「make test」は失敗しますか???

ヘルプ: 「echo "extension=pcntl.so" > /etc/php5/conf.d/pcntl.ini ではなく、「echo "extension=pcntl.so > /etc/php5/conf.d/pcntl.ini」と入力しました。 'これを初めて実行したとき.それは悪いですか?

--------------------------------- Make TEst エラー メッセージ ------------- -------------------------

何か案は!?!カール

0 投票する
1 に答える
109 参照

php - Php のフォークとメモリ共有は私を狂わせる

フォークされた子供たちの間でメモリを共有する理由を見つけるのに何時間も何日も費やしphpましたが、フォークする前に親が関数にvarを設定すると、関数は常に子供に同じ結果を返すことがわかりました:~

このサンプルを実行すると問題なく動作し、子は異なる数値を出力します。しかし、最初のコメントを外すと$this->runChildProcess($i);、すべての子が同じ結果を返すことがわかります (子によって計算された最初の結果)。

私はそれに対処する方法がわかりません:(

0 投票する
2 に答える
795 参照

php - フォークプロセスを強制終了します

バックグラウンドで実行するphpスクリプトを作成したいと思います。pcntl_forkが必要です。私はこの関数を使用して子供をフォークします:

私はそれを以下のようなスニペットですぐに呼び出します:

そのため、数分間だけ正常に動作します。'ps-ax|でプロセスをチェックしました grepphp'。コードが35エラーを出すまで終わらないプロセスがたくさんあるのを見ました。これは、それを実行するためのメモリがこれ以上ないことを意味します。これは'ps-ax|の結果です。grep php '

// pcntl_waitpid($ pid、$ status);のコメントを外すと それは問題なく魅力のように機能します。しかし、私は親が子供の仕事を待たせたくありません。どんなことでも役に立ちます。

0 投票する
2 に答える
625 参照

php - PHPのフォークとMySQLデータベースの競合なしの処理

処理する必要のあるMySQLデータベーステーブルがあります。3行の処理には約1秒かかります(各行に対してCURL接続を作成する必要があるため)。したがって、妥当な時間を確保するためにPHPスクリプトをフォークする必要があります(1つのバッチで最大10,000行を処理するため)。

一度に10〜30のプロセスを実行しますが、明らかに、プロセスが重複していないことを確認するための何らかの方法が必要です(プロセスが取得および変更している行に関して)。

私が読んだことから、これを達成するための3つの方法があります。私はこの状況に最適な方法を決定しようとしています。

オプション1:トランザクションを開始しSELECT ... FOR UPDATE、各プロセスの行数を使用および制限します。データを配列に保存します。選択した行を「処理中」のステータスフラグで更新します。トランザクションをコミットしてから、選択した行を「終了」のステータスに更新します。

オプション2:「処理中」のステータスフラグとプロセスIDを使用して特定の行数を更新します。そのプロセスIDとフラグのすべての行を選択します。通常のようにデータを操作します。それらの行を更新し、フラグを「終了」に設定します。

オプション3:各プロセスのクエリにLIMIT ... OFFSET ...句を設定して、各プロセスが処理する一意の行を取得するようにします。SELECT次に、行IDを保存して実行しUPDATE、完了したら実行します。

どのオプションが最も安全かわかりません。オプション3は十分に単純に思えますが、これが失敗する可能性がある方法はあるのでしょうか。オプション2も非常に単純に見えますが、UPDATE原因によるロックによってすべてが遅くなるかどうかはわかりません。オプション1が最善の策のように思えますが、私はFOR UPDATEトランザクションにあまり詳しくないので、いくつかの助けを借りることができます。

更新:わかりやすくするために、現在、すべての行を選択し、Curlを介してデータを1つずつサードパーティに投稿するprocess.phpファイルが1つだけあります。このファイルにフォークを入れたいので、10,000行を10〜30の子プロセスに分割できます。

0 投票する
1 に答える
798 参照

php - php5.4.4を使用したMAMP用のPCNTL。およびOSX10.8

私がインターネットで見つけたすべての手順は、古いバージョンのphpize、MAMP、php、OSX用です。

私は次の手順に従ってみました:

php5.4.4とOSX10.8を使用していますが、この問題が発生し続けています。

私の質問は、API = 20100525でコンパイルするにはどうすればよいですか、ベースphpをアップグレードしたので、5.4.4phpizeを使用していました。

make testを実行すると、次のようになります。

これが問題のあるところだと思います。どんな助けでも本当にありがたいです。

0 投票する
1 に答える
1279 参照

php - PHP にインストールされている PCNTL 拡張機能の確認

私のプロジェクトのバックグラウンド スクリプトの 1 つは、PCNTL を使用して fork します。また、スクリプトのインストール前にユーザーが実行する必要がある要件チェッカー スクリプトがあります。pcntl は CGI モードでしかアクセスできず、両方ともWeb モードfunction_exists('pcntl_fork')extension_loaded('pcntl')返さFALSEれるため、有効になっていてもブラウザ経由で起動すると、チェッカーは常に要件エラーを表示します。pcntlWeb モードからサポートが有効になっていることを確認する方法はありますか?

0 投票する
1 に答える
517 参照

php - phpアプリケーションのストリームで着信信号がクラッシュしてブロックされていますか

次のようにコードで pcntl 拡張機能を使用しました。ハンドラーを SIGUSR1 などのシグナルにバインドし、シグナルをアプリケーションに送信するスクリプトを作成しました。

そして、私はそのようなエラーがあります:

また、ssh (関数の一部) によるリモート コマンド実行のコードもあります。

ここでシグナルが発生すると、次のエラーが発生します: "Failure 'would block' (-9)"

これを回避する方法はありますか?

0 投票する
2 に答える
1663 参照

php - 最初からの応答を待たずに 2 つの API を同時に呼び出すにはどうすればよいですか?

検索ウィジェットを作っています。私が検索しているとき、2 つの API から結果を取得しています。1 つは yelp からのもので、もう 1 つは別のソースからのものです。しかし、このプロセスには時間がかかります

この両方の API を一緒に呼び出す方法はありますか? 最初の API が結果を出した後に yelp API が呼び出されるのは望ましくありません。両方とも呼びたい。

これを行う方法はありますか?

0 投票する
0 に答える
326 参照

php - PHP によるプロセス フォーク

以下のコードをコピーし、コードを実行すると常に表示されます

as output.しかし、ソースファイルには、出力が次のように表示されると書かれています

.「PHP でスレッド化を実装する方法」についてアドバイスをください。

注:cliで実行中にエラーが発生しました

PHP 警告: モジュール 'pcntl' は行 0 の Unknown に既にロードされています

ソース: http://www.electrictoolbox.com/article/php/process-forking/