У меня есть программа, которая принимает 3 массива (которые имеют одинаковую длину, может содержать 500 элементов или около того) и записывает их в текстовый файл.
Однако у меня возникает проблема с написанием больших файлов. Массивы – это координаты и временные метки приложения рисования холста, поэтому я могу контролировать длину. Я обнаружил, что после того, как файлы начинают становиться больше 2 МБ, он не сохраняет файл. Максимальный файл, который мне удалось сохранить, был 2,18 МБ. Из связанного с этим вопроса PHP: возникли проблемы с загрузкой больших файлов. Я решил, что причина, скорее всего, связана с тем, что это размещено на сервере бесплатного хостинга. Я посмотрел phpinfo () и вот 4 соответствующих номера:
memory_limit 16M max_execution_time 30 upload_max_filesize 5M post_max_size 5M
Вот соответствующий код:
// retrieve data from the JS $x_s = $_GET['x_coords']; $y_s = $_GET['y_coords']; $new_line = $_GET['new_lines']; $times = $_GET['time_stamps']; print_r($_GET); $randInt = rand(1,1000); // first want to open a file $file_name = "test_logs/data_test_" . $randInt . ".txt"; $file_handler = fopen($file_name, 'w') or die("Couldn't connect"); // For loop to write the data for ($i = 0; $i < count($x_s); $i++){ // If new line want to write new line! if (!$new_line[$i]){ if ($i!=0){ // If not the first line fwrite($file_handler, "LINE_END\n"); } fwrite($file_handler, "LINE_START\n"); } // Write the x coord, y coord, timestamp fwrite($file_handler, $x_s[$i] . ", ". $y_s[$i] .", ". $times[$i]. "\n"); // If last line then write last LINE_END if ($i == (count($x_s)-1)){ fwrite($file_handler, "LINE_END\n"); } } fclose($file_handler);
Я установил php-сервер на свой localhost и имею доступ к журналу ошибок. Это то, что я получаю.
[Fri Mar 23 20:03:02 2012] [error] [client ::1] request failed: URI too long (longer than 8190)
ПРОБЛЕМА РЕШЕНА: Проблема заключалась в том, что я использовал GET для отправки больших объемов данных, которые были добавлены в URI. Когда URI достиг 8190 символов, у него была ошибка. Использование POST разрешает это.