2017-05-02 10 views
0

PHPを使用してURLにアクセスして毎日ユーザーの支払いを差し引いています。支払いを合併する時期はありません。だから私はこの仕事を実行するためにcronを使用していません。だから、ブラウザからこのPHPファイルを呼び出して支払いを差し引く。しかし、問題は、私のPHPファイルのURLを入力すると、ブラウザは自動的にそれを打つ。私がURLをヒットしたとき。場合によっては、支払いが2回控除されることもあります。どうすればこの問題を解決できますか?それはインスタンスが実行されていた場合 は私も実行しているからPHPファイルを防ぐために、次のコードを使用している: - ファイルのPHPファイルが複数の時間に同時に実行されないようにします

スタート: - ファイルの

$fp = fopen(__FILE__, "r"); 
if (flock($fp, LOCK_EX | LOCK_NB)) { 
    echo "Got lock!\n"; 


} else { 
    print "Could not get lock!\n"; 
} 

終了: -

flock($fp, LOCK_UN); 

しかし、動いていない 。この問題を解決するために私を助けてください。助けていただければ幸いです。

+0

をあなたは、ユーザーからの支払いが実行されているを追跡するためのデータベースを持っている、とに進む前に、まずそのスクリプトのチェックを持っている必要があります新しい料金を請求する –

+0

セッションを保存および更新し、トランザクションの状態を維持するためにキャッシュ機構(redis/memcached/Php Object)を使用します。 – informer

+0

あなたはどこかに、この毎日のタスクが進行中であるか、または今日はすでに完了していることを保存する必要があります。ステータスを追跡するためにデータベースを使用すると、実行するスケジュールをCronで設定できます。私はあなたが素人を構築してスクリプトと対話できるので、データベースに言及します。 – Gntem

答えて

0

あなたは、単にすなわち、/tmp/my-php-script.lockのような何か他のものと__FILE__を交換する必要があります。

$fp = fopen("/tmp/my-php-script.lock", "r"); 
関連する問題