Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mod_fcgid: stderr: PHP Fatal error - czyli problem z hostingiem
Kulfon
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Napisałem sobie skrypt. Łączy się z bazą danych, odczytuje i wypisuje dane z 4 tabel (dosłownie 10 rekordów), wypisuje 4 formularze - po jednym do modyfikacji danych w każdej tabeli. Na lokalu <wamp 2.1 PHP 5.3.3 MySQL 5.5.8 i Apache 2.2.17> wszystko pięknie śmiga.

Po krótkich testach chciałem zobaczyć jak będzie to wyglądało w internecie i wrzuciłem na swój serwer. Wypełniłem trochę danymi i się bawiłem i przez około 20 minut wszystko działało ładnie, po czym po którymś przesłaniu danych w formularzu pusta strona (biała). I tyle mi się wyświetla. Jak już łaskawie ukaże mi się formularz logowania to po zalogowaniu się dalej pusto.

Treść dziennika logów:
[Tue Jan 10 16:05:22 2012] [warn] [client 31.175.91.238] mod_fcgid: stderr: PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 66846721 bytes) in /ścieżka_do_folderu/plik_z_funkcjami_dołączonymi_do_skryptu on line 69
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 66846721 bytes) in /ścieżka_do_folderu/plik_z_funkcjami_dołączonymi_do_skryptu on line 69


Skrypt wygląda tak:
index.php

  1. <?php
  2.  
  3. if(isset($_POST['check']))
  4. {
  5. if(($_POST['username']==$form_user) && ($_POST['pass']==$form_pass))
  6. {
  7. $_SESSION['logged'] = true;
  8. $_SESSION['login'] = $_POST['username'];
  9. }
  10. else
  11. {
  12. echo('Błędne dane');
  13. }
  14. }
  15.  
  16. if(isset($_SESSION['logged']) && (!empty($_SESSION['login'])))
  17. {
  18. include('db_select.inc'); // połączenie się z bazą
  19. include('funckje.php');
  20.  
  21. dodaj('typ1');
  22. dodaj('typ2');
  23.  
  24. mysql_close($connection);
  25. }
  26. else
  27. {
  28.  
  29. echo(' <form method="POST" action="" class="login">
  30. <fieldset>
  31. <input class="dane" type="text" name="username" value="Login" onfocus="if (this.value == \'Login\') {this.value = \'\';}" onblur="if (this.value == \'\') {this.value = \'Login\';}" />
  32. <input class="dane" type="password" name="pass" value="Hasło" onfocus="if (this.value == \'Hasło\') {this.value = \'\';}" onblur="if (this.value == \'\') {this.value =\'Hasło\';}" />
  33. <input class="login-button" type="submit" value="Zaloguj">
  34. </fieldset>
  35.  
  36. <input class="hidden" type="hidden" value="1" name="check">
  37. </form>
  38. ');
  39. }
  40.  
  41. ?>


funkcje.php
  1. <?php
  2.  
  3. function cennik($rodzaj)
  4. {
  5.  
  6. if($rodzaj == 'tpy1'){
  7. $query_typ = 'SELECT * FROM typ;';
  8. $query_kategoria = 'SELECT * FROM kategoria;';
  9. }
  10. if($rodzaj == 'typ2')
  11. {
  12. $query_typ = 'SELECT * FROM typind;';
  13. $query_kategoria = 'SELECT * FROM kategoria2;';
  14. }
  15.  
  16. $result_typ = mysql_query($query_typ);
  17. $result_kategoria = mysql_query($query_kategoria);
  18.  
  19. if(!$result_typ or !$result_kategoria){die("Nie można wykonać zapytania! <br />". mysql_error());}
  20. $i = 0;
  21. while($result_row = mysql_fetch_row($result_typ)){
  22. $result_array[$i] = $result_row[1];
  23. $result_array[$i+1] = $result_row[2];
  24. $result_array[$i+2] = $result_row[3];
  25. $i=$i+3;
  26. }
  27.  
  28. $j = 0;
  29. while($result_row = mysql_fetch_row($result_kategoria))
  30. {
  31. $result_array_tytul[$j+1] = $result_row[0];
  32. $result_array_tytul[$j] = $result_row[1];
  33. $j=$j+2;
  34. }
  35.  
  36. echo(' <h4>Tytuł</h4>
  37. <div id="tabela_html">
  38. <div id="tytul_gora">Tabela<p>'.date("d.m.Y").'r.</p></div>');
  39.  
  40. for($i; $i>=0;)
  41. {
  42. if($j>=2){
  43. echo('<div class="kategoria"><h6 class="tytul_kat">'.$result_array_tytul[$j-2].'</h6>');
  44. }
  45.  
  46. while($result_array[$i] == $result_array_tytul[$j-1]){
  47.  
  48. echo('<div class="pozycja"><span class="tytul">'.$result_array[$i-2].'</span><span class="cena">'.$result_array[$i-1].'</span></div>');
  49. $i=$i-3;
  50. if($i <=0) {break;}
  51. }
  52. echo('</div>'); // wg. logów tutaj jest błąd
  53. $j=$j-2;
  54. }
  55.  
  56. echo('</div>');
  57.  
  58. }
  59.  
  60.  
  61.  
  62.  
  63. function lista_kategorii($rodzaj)
  64. {
  65. if($rodzaj == 'typ1'){
  66. $query_kategoria = 'SELECT * FROM kategoria;';
  67. }
  68. if($rodzaj == 'typ2')
  69. {
  70. $query_kategoria = 'SELECT * FROM kategoria2;';
  71. }
  72.  
  73. $result_kategoria = mysql_query($query_kategoria);
  74.  
  75. if(!$result_kategoria){die("Nie można wykonać zapytania! <br />". mysql_error());}
  76. $j = 0;
  77. while($result_row = mysql_fetch_row($result_kategoria))
  78. {
  79. $result_array_tytul[$j+1] = $result_row[0];
  80. $result_array_tytul[$j] = $result_row[1];
  81. $j=$j+2;
  82. }
  83.  
  84. $select = '<select name="kategoria">
  85. <option></option>';
  86.  
  87. for($j; $j>=2; $j=$j-2)
  88. {
  89. $select.= '<option value="'.$result_array_tytul[$j-1].'">'.$result_array_tytul[$j-2].'</option>';
  90. }
  91.  
  92. $select.= '</select>';
  93.  
  94. return $select;
  95. }
  96.  
  97. function dodaj($rodzaj)
  98. {
  99. $potwierdzenie = '';
  100.  
  101. if($rodzaj == 'typ1'){
  102. $query_typ = 'SELECT * FROM typ;';
  103. $query_kategoria = 'SELECT * FROM kategoria;';
  104. $rodzaj2 = 'kategoria';
  105. $option = lista_kategorii('typ1');
  106. }
  107. if($rodzaj == 'typ2')
  108. {
  109. $query_typ = 'SELECT * FROM typind;';
  110. $query_kategoria = 'SELECT * FROM kategoria2;';
  111. $rodzaj2 = 'kategoria2';
  112. $option = lista_kategorii('typ2');
  113. }
  114.  
  115. if (isset($_POST['nazwa']))
  116. {
  117. if($_POST['ktoredodaj'] == 'kategoria'){
  118. if($_POST['nazwa'] != '')
  119. {
  120. $insert = 'INSERT INTO '.$_POST['rodzaj'].' VALUES (';
  121. $id = 'NULL, ';
  122. $nazwa = $_POST['nazwa'];
  123. $query = $insert.$id.'"'.$nazwa.'");';
  124.  
  125. mysql_query($query);
  126.  
  127. $potwierdzenie ='Nowa kategoria została zapisana!';
  128. unset($_POST['nazwa']);
  129. unset($_POST['rodzaj']);
  130. }
  131. else
  132. {
  133. echo('<p style="color:red; font-weight: bold; padding: 5px;">Wpisz nazwę kategorii!</p>');
  134. }
  135. }
  136. else
  137. {
  138. if($_POST['ktoredodaj'] == 'pozycja')
  139. {
  140. if($_POST['nazwa'] != '')
  141. {
  142. if($_POST['rodzaj'] == 'kategoria') $tabela = 'typ';
  143. if($_POST['rodzaj'] == 'kategoria2') $tabela = 'typ2';
  144. $insert = 'INSERT INTO '.$tabela.' VALUES (';
  145. $id = 'NULL, ';
  146. $nazwa = $_POST['nazwa'];
  147. $cena = $_POST['cena'];
  148. $id_kat = $_POST['kategoria'];
  149. $query = $insert.$id.'"'.$nazwa.'", '.$cena.', '.$id_kat.');';
  150. mysql_query($query);
  151.  
  152. $potwierdzenie ='Nowa pozycja została zapisana!';
  153. unset($_POST['nazwa']);
  154. unset($_POST['rodzaj']);
  155. }
  156. else
  157. {
  158. echo('<p style="color:red; font-weight: bold; padding: 5px;">Wszystkie pola musza być uzupełnione!</p>');
  159. }
  160. }
  161. }
  162. }
  163. else
  164. {
  165. $_POST['rodzaj'] = '';
  166. $_POST['nazwa'] = '';
  167. }
  168.  
  169. echo('
  170. <h4>Nowa kategoria</h4>
  171. <p style="color:green; font-weight: bold; padding: 5px;">'.$potwierdzenie.'</p>
  172. <form action="#nowe" method="POST" class="dodaj_kategorie">
  173. Nazwa kategorii:</td><td><input size="30" type="text" name="nazwa" value="" />
  174. <input type="hidden" name="rodzaj" value="'.$rodzaj2.'" />
  175. <input type="hidden" name="ktoredodaj" value="kategoria" />
  176. <input type="submit" value="Dodaj nową kategorię" />
  177. </form>
  178.  
  179. <h4>Nowa pozycja</h4>
  180. form action="#nowe" method="POST" class="dodaj_kategorie">
  181. Nazwa pozycji:<input type="text" name="nazwa" value="" />
  182. Cena: <input type="text" name="cena" value="" />
  183. <input type="hidden" name="rodzaj" value="'.$rodzaj2.'" />
  184. <input type="hidden" name="ktoredodaj" value="pozycja" />
  185. Wybierz kategorię: '.$option.'
  186. <input type="submit" value="Dodaj nową pozycję" />
  187. </form>
  188.  
  189. ');
  190.  
  191. }
  192.  
  193. ?>

Macie jakieś pomysły/sugestie jak rozwiązać ten problem?


za każdym razem gdy prześlę formularz to strona się przeładowuje i łączy się ponownie z bazą danych tzn tak jak na schemacie:
-łączy z bazą
-wyświetla formularz
-zamyka polaczenie
i tak w kółko za każdym przesłaniem formularza.
Czy to może szkodzić mojemu skryptowi? Tzn czy jest on przez to duży, zajmuje dużo zasobów i czy można by to zrobić lepiej? (raz łączyć z bazą danych i przeładowywać stronę bez tracenia tego połączenia)? Czy może to w niczym nie przeszkadza jak sobie dwa razy dziennie połączę się z bazą danych po 5 razy w ramach tego skryptu?


//EDIT: poprawione, wcześniej nie miałem dostępu do źródeł skryptu dlatego tak to napisałem.

Ten post edytował Kulfon 10.01.2012, 18:40:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kulfon
post
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Dzięki wielkie za pomoc, skrypt działa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 16:30