FTPサーバーにファイルを送信する処理の実装で悩んでいます。
PHPを使って処理しています。
やりたいことは画面からのリクエストでデータベースを更新するcsvファイルを作成し、FTPサーバーにアップロードするだけですが以下の制約があります。
・アップロードするファイル名は固定(main.csvとoption.csvの2種類)
・ファイルは1つずつ送信する必要がある
・1つのファイルが処理されるのに1分~10分程度かかる場合がある(サーバーの状態による)
複数のリクエストが同時に発生することがありますが、この制約により順番に1件ずつ処理しないといけません。
処理のイメージとしては画面からのリクエストで処理をデータベースに登録して、別にアップロードを行う処理をcronで定期的に起動し、順番に実行していくのかと思います。
ただしアップロード処理に時間がかかる場合があるため前の処理が実行中に次の定期実行が行われてしまうことが考えられます。
アップロードを行う処理は1つだけしか実行して欲しくないのをどうやって実現すればいいか悩んでいます。
実行前にデータベースに処理中フラグを立て、処理が終了したらフラグを消す方法しか思いつかないのですが、他にいい方法はないでしょうか?
PHPで特定の処理が実行中かどうかを知る方法というのはあるでしょうか?
よろしくお願い致します。
追記
二重起動対応にご回答いただいたpsコマンドやロックファイルが使われるみたいですね。
こちらのQiita記事にもまとめてありました。
http://qiita.com/n0bisuke/items/ad7c37d68ff0d5b87742
言葉を知らないとこういう記事を見つけられないので本当に助かります。。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/01 05:13
2017/08/01 08:25 編集
2017/08/01 08:24