Привет всем. Итак проблема. Написан класс (синтаксис совместим с php 4). В классе есть метод filler, задача которого брать из файлов, которые заданны в соотвествующих полях класса по строчке случайным образом и заливать в таблицу БД. Число итераций задаётся параметром метода. Привожу код PHP: <?php class filler{ var $host; //Наименование сервера БД, необходимо задать в конструкторе var $db; //Имя БД MySQL,задаётся в конструкторе var $user; //Имя пользователя, под которым идёт подключение к БД, задаётся в конструкторе var $password; //Пароль пользователя БД, задаётся в конструкторе var $link; //Идентификатор соединения с сервером БД var $titles; //Файл со значением поля titles var $descriptions; //Файл с описанием var $keywords; //Файл с кеями var $content; //Файл с content var $content2; //Файл с content2 function filler($Ahost,$Adb,$Auser,$Apassword){ $this->host=$Ahost;//При создании экземпляра инициализируем "приватные" члены класса $this->db=$Adb; $this->user=$Auser; $this->password=$Apassword;} function connect(){ if(!$this->connect())$this->link=mysql_connect($this>host,$this->user,$this->password);//Если нет соединения с сервером БД, подсоедиянемся } function select(){ if($this->link) return mysql_select_db($this->db,$this->link);else return 0;//Выбор базы на сервере БД } function disconnect(){ if($this->link) return mysql_close($this->link);//Закрытие соединения с сервером БД } function fill($id,$n){if(!isset($this->titles))return 1;//Перед выполнением метода необходимо инициализировать поля именами файлов с данными. if(!isset($this->descriptions))return 2; if(!isset($this->keywords))return 3; if(!isset($this->content))return 4; if(!isset($this->content2))return 5; $title=file($this->titles); // echo("Получили титлы"); if(!$title)return 6; $description=file($this->descriptions); // echo("получили описание"); if(!$description)return 7; $keyword=file($this->keywords); if(!$keyword)return 8; $contenti=file($this->content); if(!$contenti)return 9; $contenti2=file($this->content2); if(!$contenti2)return 10; if(!$this->link)$this->connect(); if(!$this->select())return 11;else for($i=0;$i<$n;$i++){ $t=addslashes($title[rand(0,count($title))]); $d=addslashes($description[rand(0,count($description))]); $k=addslashes($keyword[rand(0,count($keyword))]); $c=addslashes($contenti[rand(0,count($contenti))]); $c2=addslashes($contenti2[rand(0,count($contenti2))]); $Query="Insert into pages values('".addslashes($id.$i)."','".$t."','".$k."','".$c."','".$c2."')"; $result=mysql_query($Query,$this->link); if(!$result)return mysql_errno($this->link);} return 0;} ..... }?> Так вот именно при выполнении этого метода в логах появляется сообщение о перезапуске сервера, после чего ни один запрос GET к нему уже не проходит. Подскажите, в чём я так неправ, что сервер при выполнении метода fill рестартует? Апач версии 2. Все поля инициализированы и применение к ним функции file возвращает массивы. Это проверено.[/list]
Ну кто так форматирует код, а? Щас выложу нормально отформатированный. Надо вот так: PHP: <?php /** * Enter description here... * */ class filler{ /** * Наименование сервера БД, необходимо задать в конструкторе * * @var string */ var $host; /** * Имя БД MySQL,задаётся в конструкторе * * @var string */ var $db; /** * Имя пользователя, под которым идёт подключение к БД, задаётся в конструкторе * * @var string */ var $user; /** * Пароль пользователя БД, задаётся в конструкторе * * @var string */ var $password; /** * Идентификатор соединения с сервером БД * * @var resource */ var $link; /** * Файл со значением поля titles * * @var string */ var $titles; /** * Файл с описанием * * @var string */ var $descriptions; /** * Файл с кеями * * @var string */ var $keywords; /** * Файл с content * * @var string */ var $content; /** * Файл с content2 * * @var string */ var $content2; /** * Enter description here... * * @param string $Ahost * @param string $Adb * @param string $Auser * @param string $Apassword * @return filler */ function filler($Ahost, $Adb, $Auser, $Apassword) { $this->host = $Ahost;//При создании экземпляра инициализируем "приватные" члены класса $this->db = $Adb; $this->user = $Auser; $this->password = $Apassword; } /** * Enter description here... * */ function connect(){ if (!$this->connect()) { $this->link = mysql_connect($this>host, $this->user, $this->password);//Если нет соединения с сервером БД, подсоедиянемся } } /** * Enter description here... * * @return mixed */ function select() { if ($this->link){ return mysql_select_db($this->db, $this->link);//Выбор базы на сервере БД } else { return 0; } } /** * Enter description here... * * @return mixed */ function disconnect() { if ($this->link) { return mysql_close($this->link);//Закрытие соединения с сервером БД } } /** * Enter description here... * * @param unknown_type $id * @param unknown_type $n * @return unknown */ function fill($id, $n) { if (!isset($this->titles)) { return 1;//Перед выполнением метода необходимо инициализировать поля именами файлов с данными. } if (!isset($this->descriptions)) { return 2; } if (!isset($this->keywords)) { return 3; } if (!isset($this->content)) { return 4; } if (!isset($this->content2)) { return 5; } $title = file($this->titles); // echo("Получили титлы"); if (!$title) { return 6; } $description = file($this->descriptions); // echo("получили описание"); if (!$description) { return 7; } $keyword = file($this->keywords); if (!$keyword) { return 8; } $contenti = file($this->content); if (!$contenti) { return 9; } $contenti2 = file($this->content2); if (!$contenti2) { return 10; } if (!$this->link) { $this->connect(); } if (!$this->select()) { return 11; } else { for($i = 0; $i < $n; $i++) { $t = addslashes($title[rand(0,count($title))]); $d = addslashes($description[rand(0,count($description))]); $k = addslashes($keyword[rand(0,count($keyword))]); $c = addslashes($contenti[rand(0,count($contenti))]); $c2 = addslashes($contenti2[rand(0,count($contenti2))]); $Query = "Insert into pages values('".addslashes($id.$i)."','".$t."','".$k."','".$c."','".$c2."')"; $result = mysql_query($Query, $this->link); if (!$result) { return mysql_errno($this->link); } } return 0; } } }
Спасибо. Так а если по сути кто-нибудь знает, что такого криминального в методе fill, что он сервак заваливает? PHP подключён, как модуль апача.
Вот, что пишет в error.log при выполнении GET запроса к скрипту. Происходит именно в методе fill, т.к. без него этого не наблюдается. Код (Text): [Wed Mar 11 19:22:44 2009] [notice] Parent: child process exited with status 128 -- Restarting. [Wed Mar 11 19:23:19 2009] [notice] Apache/2.2.4 (Win32) PHP/5.2.1 configured -- resuming normal operations Соответственно, в access.log вообще ничего, как будто обращения к скрипту и не было.