ショートバージョン
私がしたいのは、Pythonで s ubprocess.call(['php', '/path/somescript.php'])
、phpスクリプトの最初の行は基本的に"echo 'Here!';"
. しかし、subprocess.call
は のエラー コードを返し、-11
php スクリプトは最初の行を実行せず、何も出力にエコーしません。これはすべて、Ubuntu Server 12.04.2 および Ubuntu Desktop 12.04.2 で発生しています。
-11
戻りコードの意味を教えてくれる人はいますか? (それは python、システム、または php コマンドから来ていますか?
何度か、php スクリプトの奥深くまで実行され、「zend_mm_heap が壊れています」と出力されて1
.
質問のより説明的なバージョン:
を使用していくつかのphpunitテストを実行した後、subprocess.call(['phpunit', ...])
別のphpスクリプトを実行して、テストの実行中に収集されたコードカバレッジデータを収集したいpythonスクリプトがありsubprocess.call(['php', '/path/coverage_collector.php'])
ます.
数か月間、スクリプトは正常に機能していましたが、今日、さらにいくつかのファイルとテストを追加したところ、失敗し始めました (100% の確率ではなく、約 5 ~ 10% の確率で機能します)。
失敗すると がsubprocess.call
返さ-11
れ、 の最初の行はcoverage_collector.php
そのメッセージを stdout にエコーすることができませんでした。数回、php スクリプトの奥深くまで実行され、エラー コードで失敗し1
、"zend_mm_heap corrupted"
.
各フォルダーにサブフォルダーを含めることができるディレクトリ構造があり、各フォルダーは単体テストを実行し、そのフォルダーとそのサブフォルダーのカバレッジ データが収集されます。
スクリプトは、すべてのフォルダーとそのサブフォルダー (すべてのテストの実行とすべてのカバレッジの収集) で正常に動作し、以前はルート レベルのフォルダーでも正常に動作していました (現在、同じファイルを使用する多くの小さなプロジェクトで正常に動作しています)。正確な構造とスクリプト) - 今日まで、罪のない十分なコード チェックインの後に失敗し始めた後、スクリプトを使用して php プロジェクトの 1 つにいくつかのファイルとテストを追加しました。
奇妙なことは、この奇妙な場所で失敗していることです-phpコマンドを呼び出そうとしているときに、phpスクリプトの最初の行を実行することさえできず、これは同じphpスクリプトが多数実行されてからわずか数秒後に発生します他のフォルダと正常に動作しました。
ルート レベルのスクリプトには、処理するデータが単純に多いという事実が原因である可能性があるのではないかと疑っています。独自のカバレッジとすべてのサブフォルダーのカバレッジを組み合わせています (発生した場合、zend ヒープの破損を説明する可能性があります)。ほとんどの場合、呼び出しが で失敗する理由はまだ説明-11
されておらず、php スクリプトがカバレッジ データの収集を開始することさえできません。
何か案は?