Это очень, хм, странный метод кеширования.
Предположим, вы хотите изменить некоторый php-код в файле.
file_put_contents имеет возможность добавлять данные в конец файла, вызывать этот метод с флагом FILE_APPEND ( details ).
Вы можете изменить метод определения массива следующим образом:
$traffic_array[new key 1] = array(new data 1);
$traffic_array[new key 2] = array(new data 2);
...
А потом вы просто добавляете содержимое в конец файла, как это
file_put_contents($file, '$traffic_array[your new key] = array(data for adding);', FILE_APPEND);
Но если вы не можете изменить метод определения массива traffic_array, то file_put_contents не для вас. Используйте fopen()
с флагом 'r +', используйте fseek()
для перемещения указателя в правильное место для помещения новых данных в файл, fwrite()
для записи только новых данных и fclose()
.
// Content of file: <?php $a = array('k' => array(), 'k2' => array());\n
$f = fopen('file', 'r+');
fseek($f, -3, SEEK_END); // place the pointer after last value of array, before ");\n"; cont from end
fwrite($f, ", 'k3' => array('f'=>'a'));\n"); // put new data, also add overwrited data ");\n"
fclose($f);
//now content of file: <?php $a = array('k' => array(), 'k2' => array(), 'k3' => array('f'=>'a'));\n
Изменение входного файла может вызвать огромные проблемы.
Также проблема с методом, описанным выше, если бы этот процесс происходил многократно, в ТОЧНУЮ же миллисекунду - что-то испортилось бы, верно?
Правильно, читайте о блокировке файлов.