3つの配列(同じ長さで、500個ほどのアイテムが入る)を取得し、テキストファイルに書き込むプログラムがあります。"大きな"ファイルを保存する際に問題が発生するPHP
しかし、大きなファイルを書き込む際に問題が発生しています。配列は、キャンバス描画アプリケーションの座標とタイムスタンプですので、長さを制御できます。私は、ファイルが2MB以上になると、ファイルを保存しないことに気付きました。保存できる最大ファイルは2.18MBでした。関連する質問PHP: Having trouble uploading large filesから私はこの原因がフリーのホスティングサーバーでホストされている可能性が高いと判断しました。私は(の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サーバーをしましたし、アクセス権を持っていますエラーログに出力します。これは私が得ているものです。
[Fri Mar 23 20:03:02 2012] [error] [client ::1] request failed: URI too long (longer than 8190)
問題は解決:問題は、私がURIに追加されたデータを、大量のを送信するためにGETを使用していたということでした。 URIが8190文字に達すると、エラーが発生しました。 POSTを使用するとこれが解決されます。
サーバーにsuhosinパッチがインストールされていますか? – piotrekkr
私はこれが無料のWebサーバー上にあると言っていたので、何も考えません –
'phpinfo();を呼び出すと表示されます – chiborg