多次元配列を使用して、サイトのトラフィック分析を格納するcacheというファイルがあります。ファイル全体を書き直さずにキャッシュファイル内の配列を処理する
cache.php
$traffic_array=array("date_ip_uniqueNU"=>array("pageviews"=>34,"time_enteredOnsite"=>"12:00"),"date_ip_uniqueNU"=>array("pageviews"=>34,"time_enteredOnsite"=>"12:00"));//ect ect
は今、私は何とか上記のアレイに追加する必要があります。
私は単純に、ファイル全体を読んで通過し、foreachループでアレイを再構築して、ちょうど再書き込みファイル全体、このようなものでした:それで、あなたは何を参照ください
include('cache.php');
foreach($traffic_array as $mainKey){
$rebuild_contents.="array("something"=>array("pageviews"=>".$mainKey['pageviews'].","time_enteredOnsite"=>".$mainKey['time_enteredOnsite'].");"//so I'm just building a string containing all the code to re-write the file.
}
//then write to the file
$file="cache.php";
$content_to_put"\<? \$traffic_array=\"$rebuild_content\";"
file_put_contents($file,$content_to_put);
//NOTE: I just quickly wrote this up now, so expect syntax errors.
私は上記のようにしました。配列の内容を文字列に再構築し、その文字列をキャッシュファイルに書き込むだけです。
しかし、私はこれにはるかに良いアプローチがあると確信していますので、誰かが私を助けることができますか?
ありがとうございました! xD
EDIT:上記の方法にも問題があります。このプロセスが複数回発生する場合は、同じミリ秒で、何かがうんざりするでしょうか?
広告編集:はい。それを防ぐには 'flock()'を使用してください – Robus
@Robusこれは面白いです - だから、ファイルがすでに使用されているかどうかを確認するには? –
http://www.php.net/manual/en/function.flock.phpを参照してください。 – Robus