Почему скрипт на холме записывает тока 4 килобайта, а остальное обрезает? =\ данные передаются через Post, а потом пишутся в файл, безо всяких ограничений. В итоге получаю файл ровно 4.096 кб
вот блин. у себя на денвере запустил - попробовал запостить страницу гугла. в итоге он добавил ПОСЛЕДНИЕ 4.84 кб =\ вот код формы: PHP: <form method="POST" name="addpostform"> <input type="text" name="title" class="textinput" /> <select name="cat" style="border: 1px solid black;"> <option value="0">other</option> <option value="1">проги</option> </select> <textarea name="preview" id="pr"></textarea> <textarea name="body" id="post" ></textarea></p> <input type="submit" value="добавить пост" /> </form> вот add.php: PHP: <?php if($_SERVER['REQUEST_METHOD'] == 'POST'){ if(trim($_POST['title'])!= "" && trim($_POST['body']) != ""){ if((isset($_SESSION['body']) && $_SESSION['body'] != trim($_POST['body'])) || !isset($_SESSION['body'])){ $_SESSION['body'] = trim($_POST['body']); $txt = new txtDB(); $filename = date("H-i.d-m-y", time()); # add preview if(isset($_POST['preview']) && (trim($_POST['preview']) != "")){ $preview = nl2br(trim($_POST['preview'])); $txt->dir("post_preview"); $txt->writeToFile($filename, $preview, "w"); $txt->dir("posts"); } # end $txt->dir("posts"); $txt->createFile($filename); $data = nl2br(trim($_POST['body'])); $txt->writeToFile($filename, $data, "w"); $title = chunk_split(substr(trim($_POST['title']), 0, 60), 30, "<br />"); // $form = substr("abcdef", 1, 3); // вернет "bcd" if($_SESSION['admin'] == "deex") $author = 0; else $author = 1; $record = date("H-i.d-m-y", time())."||".$title."||".$_POST['cat']."||".$author."\n"; $txt->writeToFile("posts.info", $record, "a"); $status = '<div style="float: left; padding-left: 20px; color: green; font-weight: bold;">Added</div>'; }else $status = '<div style="float: left; padding-left: 20px; color: #CC0000; font-weight: bold;">Post duplicated</div>'; }else $status = '<div style="float: left; padding-left: 20px; color: #CC0000; font-weight: bold;">All fields required</div>'; } include("tpl/add_post.tpl.php"); ?> и последнее - это мой замучанный класс для записи в файл: PHP: <?php class txtDB { var $path, $buffer, $rs, $tmp, $arr = Array(); // messages function error($text){ echo "<p style='color: white; font-weight: bold; background-color: #FF9D9D; padding: 3px;'>".$text."</p>"; } function done($text){ echo "<p style='color: green; background-color: #DBFFCA; padding: 3px;'>".$text."</p>"; } // init work dir function dir($dirname){ if(file_exists($dirname)) $this->path = $dirname."/"; else if(mkdir($dirname)) $this->path = $dirname."/"; else error("Can`t create directory ".$dirname); } function createFile($file_name, $mode="soft"){ if(file_exists($this->path.$file_name)){ if($mode != "rewrite"){ $this->error("file exists"); return 0; } elseif($mode == "rewrite"){ unlink($this->path.$file_name); touch($this->path.$file_name); return 1; } }else{ touch($this->path.$file_name); return 1; } return 0; } function writeToFile($file_name, $data, $mode="a"){ $data = stripslashes($data); if(file_exists($this->path.$file_name)){ if($mode == "w"){ if($t = fopen($this->path.$file_name, "w")){ fwrite($t, $data); fclose($t); } }else{ if($t = fopen($this->path.$file_name, "a")) fwrite($t, $data); fclose($t); } }else{ if($t = fopen($this->path.$file_name, "w")){ fwrite($t, $data); fclose($t);} } } function readFromFile($file_name){ if(file_exists($this->path.$file_name)){ $t = fopen($this->path.$file_name, "r"); while(!feof($t)) $this->buffer = fread($t, "4096"); return $this->buffer; }else $this->error($this->path.$file_name." is not exists"); return 0; } function dirList($dir="", $arr= array()){ if($dir != "") $this->rs = opendir($this->path.$dir."/"); else $this->rs = opendir($this->path); while($this->tmp = readdir($this->rs)) if($this->tmp != "." && $this->tmp != "..") $arr[] = $this->tmp; closedir($this->rs); return $arr; } // end of class function dateFormat($comm){ $comm = explode(".", $comm); $time_m = explode("-", $comm[0]); $time = $time_m[0].":".$time_m[1]; return $time." ".$comm[1]; } } ?>
увеличил лимит чтения. всё работает. на всякий случай заменил fwrite на fputs. непонятно тока, почему на локалхосте он сохранял всё, но читал последний кусок файла, а на хосте сохранял лишь его первый кусок.