Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcja blokuje strone, Problem z wyswietleniem strony.
mac310
post 12.01.2006, 09:00:31
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2006

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


Stworzyłem sobie funkcję działającą z 4 zmiennymi np. abc (x, y, z, n). Funkcja ma coś tam robić np. wstawiać określony kod html po podaniu określonych zmiennych.
W treści dokumentu np. test.php wstawiam sobie w różnych miejscach sekwencję:
<?php abc (1, 2, 3, 4) ?>
... i wszystko jest OK do chwili gdy tych wystąpień (tego odwołania do funkcji) nie jest zbyt dużo. Po przekroczeniu pewnej wartości strona się nie wyświetla, a jak przerwę wczytywanie strony, to wyświetla się jej niepełna zawartość.
Co jest nie tak?
Czy to wina konfiguracji php, Apacha czy konstrukcji kodu/odwołań do funkcji itp.

Dzięki.

Maciek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
mike
post 12.01.2006, 09:07:28
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Twoja funkcja chyba przeciąża serwer.
Jest to na 99% sytuacja kiedy serwer jest w pożądku ale to Ty (Twój kod zawala sprawę).

Pokaż może kod tej funcji.
I napisz ile razy ją wywołujesz (choć to raczej nie ma znaczenia)
Go to the top of the page
+Quote Post
mac310
post 12.01.2006, 09:20:08
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2006

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


test.php
  1. <HTML>
  2. <BODY>
  3. Ble ble ble
  4.  
  5. <?php abc (1,2,3,4) ?>
  6. Ble ble ble
  7.  
  8. <?php abc (1,2,3,4) ?>
  9. Ble ble ble
  10.  
  11. <?php abc (1,2,3,4) ?>
  12. Ble ble ble
  13.  
  14. <?php abc (1,2,3,4) ?>
  15.  
  16. itd
  17. </BODY>
  18. </HTML>

wywołanie funkcji zaczyna robić problem jak jest wstawione ponad np. 40 razy

funkcja.txt (includowana do test.php)
  1. <?php
  2. function abc ($x, $y, $z, $n) {
  3. if $n == 1 {
  4. echo ("cośtam $x i $y i moze jeszcze $z");
  5. }
  6. else {
  7. echo ("cośtam innego $x i $y i moze jeszcze $z");
  8. }
  9. }
  10. ?>


poprawiam
---
nospor


Tych If w funkcji jest kilka, ale casłość nie ma więcej niż 20 linii.

Ten post edytował nospor 12.01.2006, 09:26:35
Go to the top of the page
+Quote Post
DzikiLis
post 12.01.2006, 11:09:58
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 16.12.2005
Skąd: Warszawa, Kabaty

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


A czy ciągle wywoływana jest z tymi samymi argumentami, tak jak w przykładzie? Bo jeśli tak, to:
  1. <?php
  2.  
  3. $wynik = abc (1,2,3,4);
  4.  
  5. ?>


A w kodzie:
  1. Ble ble ble
  2. <?php echo $wynik ?>
  3. Ble ble ble
  4. <?php echo $wynik ?>
  5. Ble ble ble
  6. <?php echo $wynik ?>
Go to the top of the page
+Quote Post
mac310
post 12.01.2006, 11:13:10
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2006

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


No nie... tak tylko napisałem z rozpędu. Wywoływane jest za każdym razem z innymi.
Go to the top of the page
+Quote Post
bigZbig
post 12.01.2006, 13:50:07
Post #6





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


No i pewnie tresc funkcji tez jest inna bo wywolanie tej konkretnej - podanej przez Ciebie z pewnoscia nie stwarza problemow.

Ten post edytował bigZbig 12.01.2006, 13:50:30


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
mac310
post 12.01.2006, 14:23:47
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2006

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


OK, jeśli tak, to pakuję właściwy kod... mam nadzieję, że to coś zmieni

Główna część:
  1. <table cellpadding="5" cellspacing="0" width="800" border="0">
  2.  
  3. <!-- S -->
  4. <tr>
  5. <td rowspan="2" width="200">
  6. <?php galeria (6, 1, H, 1); ?>
  7. </td>
  8. <td valign="top">
  9. <b>Efekt spękań cracle glaze.</b>
  10. </td>
  11. </tr>
  12. <tr>
  13. <td valign="bottom">
  14. <?php
  15. galeria (6, 2, H);
  16. galeria (6, 3, H);
  17. galeria (6, 4, H);
  18. ?>
  19. </td>
  20. </tr>
  21. <!-- S -->
  22.  
  23. <!-- S -->
  24. <tr>
  25. <td rowspan="2" width="200">
  26. <?php galeria (7, 1, H, 1); ?>
  27. </td>
  28. <td valign="top">
  29. <b>Postarzona i patynowana szafa.</b>
  30. </td>
  31. </tr>
  32. <tr>
  33. <td valign="bottom">
  34. &nbsp;
  35. </td>
  36. </tr>
  37. <!-- S -->
  38.  
  39. <!-- S -->
  40. <tr>
  41. <td rowspan="2" width="200">
  42. <?php galeria (8, 1, H, 1); ?>
  43. </td>
  44. <td valign="top">
  45. <b>Stiuk wenecki.</b>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td valign="bottom">
  50. &nbsp;
  51. </td>
  52. </tr>
  53. <!-- S -->
  54.  
  55. <!-- S -->
  56. <tr>
  57. <td rowspan="2" width="200">
  58. <?php galeria (10, 1, V, 1); ?>
  59. </td>
  60. <td valign="top">
  61. <b>Relief z gipsu.</b>
  62. </td>
  63. </tr>
  64. <tr>
  65. <td valign="bottom">
  66. <?php galeria (10, 2, H); ?>
  67. </tr>
  68. <!-- S -->
  69.  
  70. <!-- S -->
  71. <tr>
  72. <td rowspan="2" width="200">
  73. <?php galeria (11, 1, H, 1); ?>
  74. </td>
  75. <td valign="top">
  76. <b>Imitacja zardzewiałych blach wykonana na zabudowach gipsowo--kartonowych.</b>
  77. </td>
  78. </tr>
  79. <tr>
  80. <td valign="bottom">
  81. <?php
  82. galeria (11, 2, H);
  83. galeria (11, 3, V);
  84. galeria (11, 4, H);
  85. ?>
  86. </td>
  87. </tr>
  88. <!-- S -->
  89.  
  90. <!-- S -->
  91. <tr>
  92. <td rowspan="2" width="200">
  93. <?php galeria (12, 1, V, 1); ?>
  94. </td>
  95. <td valign="top">
  96. <b>Spatynowane i postarzone sztukaterie.</b>
  97. </td>
  98. </tr>
  99. <tr>
  100. <td valign="bottom">
  101. <?php
  102. galeria (12, 2, H);
  103. ?>
  104. </td>
  105. </tr>
  106. <!-- S -->
  107.  
  108. <!-- S -->
  109. <tr>
  110. <td rowspan="2" width="200">
  111. <?php galeria (1, 1, V, 1); ?>
  112. </td>
  113. <td valign="top">
  114. <b>Drzwi malowane techniką mieszaną przecierki i cracle glaze.</b>
  115. </td>
  116. </tr>
  117. <tr>
  118. <td valign="bottom">
  119. <?php
  120. galeria (1, 2, V);
  121. galeria (1, 3, H);
  122. galeria (1, 4, H);
  123. galeria (1, 5, V);
  124. ?>
  125. </td>
  126. </tr>
  127. <!-- S -->
  128.  
  129. <!-- S -->
  130. <tr>
  131. <td rowspan="2" width="200">
  132. <?php galeria (15, 1, H, 1); ?>
  133. </td>
  134. <td valign="top">
  135. <b>Faktura ściany.</b>
  136. </td>
  137. </tr>
  138. <tr>
  139. <td valign="bottom">
  140. &nbsp;
  141. </td>
  142. </tr>
  143. <!-- S -->
  144.  
  145. <!-- S -->
  146. <tr>
  147. <td rowspan="2" width="200">
  148. <?php galeria (14, 1, H, 1); ?>
  149. </td>
  150. <td valign="top">
  151. <b>Ornamenty.</b>
  152. </td>
  153. </tr>
  154. <tr>
  155. <td valign="bottom">
  156. <?php
  157. galeria (14, 2, H);
  158. galeria (14, 3, V);
  159. galeria (14, 4, H);
  160. galeria (14, 5, V);
  161. galeria (14, 6, H);
  162. galeria (14, 7, H);
  163. ?>
  164. </td>
  165. </tr>
  166. <!-- S -->
  167.  
  168. </table>


Plik z funkcją:
  1. <?php
  2.  
  3. function galeria ($sekcja, $numer, $orientacja, $pozycja) {
  4.  
  5. $nazwa = "$sekcja-$numer-$orientacja";
  6.  
  7. if ($pozycja == "1") {
  8. if ($orientacja == "H") {
  9. echo ("<A href="javascript:otworz('wnętrza','obrazki/$nazwa-hr.jpg',810,610);" title="Kliknij aby powiększyć"><img src="obrazki/$nazwa-lr.jpg" width="200" height="150" border="0" alt="Ładny Gips - galeria"></A>");
  10. }
  11. else {
  12. echo ("<A href="javascript:otworz('wnętrza','obrazki/$nazwa-hr.jpg',610,810);" title="Kliknij aby powiększyć"><img src="obrazki/$nazwa-lr.jpg" width="200" height="267" border="0" alt="Ładny Gips - galeria"></A>");
  13. }
  14. }
  15. else {
  16. if ($orientacja == "H") {
  17. echo ("<A href="javascript:otworz('wnętrza','obrazki/$nazwa-hr.jpg',810,610);" title="Kliknij aby powiększyć"><img src="obrazki/$nazwa-lr.jpg" width="106" height="80" border="0" alt="Ładny Gips - galeria"></A>");
  18. }
  19. else {
  20. echo ("<A href="javascript:otworz('wnętrza','obrazki/$nazwa-hr.jpg',610,810);" title="Kliknij aby powiększyć"><img src="obrazki/$nazwa-lr.jpg" width="60" height="80" border="0" alt="Ładny Gips - galeria"></A>");
  21. }
  22. }
  23.  
  24. }
  25. ?>
  26.  


Czy teraz to coś wyjaśnia?
Go to the top of the page
+Quote Post
bigZbig
post 12.01.2006, 14:56:24
Post #8





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Wywolujesz galeria (10, 2, H); gdy tymczasem definicja twojej funcji przewiduje 4 argumenty. Wywoluj z czterema np galeria(10, 2, "H", ""); albo nadaj ostatniemu argumentowi wartosc domyslna np.
  1. <?php
  2. function galeria ($sekcja, $numer, $orientacja, $pozycja=false) {}
  3. ?>

Jak pewnie zauwazyles wartosc typu string objalem cudzyslowami.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
mac310
post 12.01.2006, 15:03:56
Post #9





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2006

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


Bardzo dziękuję. Ćwiczyłem to wczoraj w nocy i już nie wiedziałem na co patrzę. Wydawało mi się, że jeśli nie podaję argumentu, to jest to jednoznaczne z wartością pustą jak "".
Zmyliło mnie też to, że do pewnego czasu działa, a po wstawieniu kolejnego odwołania, przestaje. Trochę mnie to dziwi.
Jakie jest na to wytłumaczenie?

Jeszcze raz dziękuję smile.gif

Jak się okazało to jeszcze nie do końca pomogło... dopiero jak H i V wziąłem w "" to poszło.
Czyżby bez "" traktował to inaczej?

Ten post edytował mac310 12.01.2006, 15:35:46
Go to the top of the page
+Quote Post
dtb
post 12.01.2006, 15:49:34
Post #10





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


bez czudzyslowiow traktuje to jak stala. jezeli stala nie istnieje to zwraca string z nazwa stalej:

echo LOL; // zwroci "LOL"


--------------------
Go to the top of the page
+Quote Post
mike
post 12.01.2006, 15:56:35
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(dtb @ 2006-01-12 15:49:34)
bez czudzyslowiow traktuje to jak stala. jezeli stala nie istnieje to zwraca string z nazwa stalej:

echo LOL; // zwroci "LOL"

Nieprawda.

Kod:
  1. <?php
  2.  
  3. echo LOL;
  4.  
  5. ?>


Zwróci:
Cytat
Notice: Use of undefined constant LOL - assumed 'LOL' in C:\usr\www\index.php on line 3
LOL


A dlaczego?
Bo php natrafiając na stałą, której nie ma generuje komunikat o tym że stała taka nie istnieje (można go stłumić odpowiednią konfiguracją dyrektywy error_reporting oraz display_errors), potem domyślnie tworzy ją wstawiając jej wartość taką samą jak jej identyfikator. To dlatego echo jednak wyświetla stałą.
Ale robienie czegoś takiego to błąd.
Tak samo jak stwierdzenie "jezeli stala nie istnieje to zwraca string z nazwa stalej" jest błędne.

P.S.Uogólnienia to śmierć dla sztuki.
Boskie natchnienie tkwi w szczegółach.
tongue.gif
Go to the top of the page
+Quote Post
bigZbig
post 12.01.2006, 16:02:54
Post #12





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


@mike_mech - jestes poeta - przepraszam za te nic niewnoszaca do tematu dygresje winksmiley.jpg

--edit---
Zapomniałem podpisać.
Autorem tego powiedzenia jest Arthur Miller.
Zabij mnie, ale nie wiem kim był. Po prostu zasłyszałem.
~mike_mech


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:46