2
次のコードを実行しています。それはテキストファイルを取り、 '_part'で終わる部分に分割し、ファイルを処理するフラグを持つ同じスクリプトを呼び出して、Drupalシステムにコンテンツをアップロードします。phpでshell_execを実行するとWebサーバーがハングする
何が起こるかは、スクリプトが実行されて作業が終了し、呼び出されたすべてのスクリプトも終了し、結果が表示されます。私はそれを実行した後、毎回Webサーバーが応答を停止します。私が行方不明または間違っている何か基本的なものはありますか?
if(isset($argv[3])){
$isSplit = $argv[3] == 'true' ? true : false;
}
if($isSplit){
$fileSplitter = new CSVFileParts($fileName);
$parts = $fileSplitter->split_file();
echo 'Splited file to '.$parts.' parts'.PHP_EOL;
for($part =0; $part < $parts; $part++){
echo shell_exec('php Service.php u ./partial_files/'.basename($fileName).'.part_'.$part.' false > /dev/null 2>/dev/null &');
}
}else{
$log->lwrite('uploading '.$argv[2]);
$drupalUploader = new DrupalUploader($fileName, $log);
$drupalUploader->upload();
}
あなたはエコーはshell_exec(試みることができるのPHP Service.php U:あなたがプロセスを切り離し、すべての出力を削除することを計画したよう
、あなたは、exec()とescapeshellcmd()
参照を使用する必要があります。 /partial_files/'.basename($fileName).'part''.$part。 '>/dev/null; echo $?'); – Wesley
$ parts varがあなたの持つ部品数や配列数であるかどうか不思議です。あなたの配列の中で$ part <$ partsのようにするなら、おそらくsizeof($ parts)を試してください – Wesley
スクリプトは終了しましたか?あなたは書きましたが、結果を見ることができますが、スクリプトが完了したことを実際にどのように追跡していますか? – hakre