私のアプリケーションの中に少し問題があります。 私は多くのプロセスを自動的に起動し、crontabを使って、フォルダ内のファイルを読むためにPHPで書かれたサーバーから起動します。複数のプロセスが同じファイルを読み込んでいます
異なるプロセスが同じファイルを読み取り、アプリケーション内で問題を作成することがあります。 この問題を管理する方法はありますか? 実際には、フォルダ内のすべてのファイルを読み込み、それぞれを読み込んですぐに削除しますが、削除する前に別のプロセスが同じファイルを読み込むことがあります。
これはcakephp3(ファイルのようなので、いくつかのクラスは唯一cakephp3のためですが、質問のポイントではありません)読み込み、削除すると書かれた私のスクリプトです:(取得する
$xml_files = glob(TMP . 'xml/*.xml');
foreach($xml_files as $fileXml)
{
//read the file and put into a string or array or object
$explStr = explode('/', $fileXml);
$filename = $explStr[count($explStr) - 1];
$path = TMP . '/xml/' . $filename;
$file = new File($path, false);
if($file->exists()){
$string = $file->read();
$file->close();
$file->delete();
}
}
興味深いことに、[CakePHP File API](http://book.cakephp.org/3.0/ja/core-libraries/file-folder.html#file-api)は、ロックがフレームワークによって処理されることを示唆しています。 exists()条件はここでは役に立たないようですが、if($ string = $ file-> read())で置き換えようとしましたか? –
私はそれを試みましたが、問題を解決する方法はありません@ code-kobold –