Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt nagle przerywa swoje dzialania po pierwszym 'include'
mih
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.08.2007

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


Witajcie, mam pewien dziwny problem..

Mam mala strone, ktora caly czas generuje losowa zawartosc. Jest to zrobione w bardzo prymitywny sposob - jest sobie plik losowanie.php, ktory losuje jedno z 1000 zdan. Na stronie glownej, w czesci body, w odpowiednim miejscu wstawiam sobie 20 razy <? include("losowanie.php"); ?> i w ten sposob powinienem otrzymac za kazdym razem 20 losowych zdan.

Takie rozwiazanie dziala na koncie w home.pl, jednak po przerzuceniu jej do KEI skrypt przerywa swoje dzialanie po pierwym include. Tzn. pojawia sie naglowek strony, pierwsze losowe zdanie i pozniej jest koniec - urwana strona.

Wiecie moze co moze powodowac takie zjawisko? Administracja serwera poinformowala mnie, ze to najprowdopodobniej problem ze skryptem, tylko dlaczego on dziala na home.pl....

Z gory dziekuje za pomoc!
Go to the top of the page
+Quote Post
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


No to ewidentnie "wina" serwera, a nie skryptu, skoro działa na jednym servie, a na drugim nie...
Ja bym zrobił tak:
1. Plik logowanie.php zaprojektować tak, żeby utworzył funkcję losuj(), która będzie zwracała jedno losowe zdanie.
2. W pliku głównym napisać:

  1. <?php
  2. include ('logowanie.php');
  3. ?>

3. Wywołać funkcję wewnątrz pętli

  1. <?php
  2. for ($itt=0; $itt<$ilosc_wywolan; $itt++)
  3. {
  4. losuj();
  5. }
  6. ?>


gdzie $ilosc_wywolan to ilość zdań, które chcesz wygenerować (w Twoim przypadku 20).

Ten post edytował Hazel 17.08.2007, 11:57:26


--------------------
Go to the top of the page
+Quote Post
mih
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.08.2007

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


Bardzo dziekuje za odpowiedz.

Jesli chodzi o KEI to obawiam sie, ze moga byc niechetni do pomocy dlatego, ze konto u nich wygralem w konkursie ktore sponsorowali (i w zasadzie za nie nie zaplacilem). Mimo to to niemilo z ich strony..

W takim ukladze jestem zmuszony poszukwac rozwiazania bez ich pomocy. Mam ogromna prosbe - moj skrypt jest bardzo prosty, jako, ze praktycznie nie znam php. Wszystko co robie odbywa sie metoda prob i bledow, ewentualnie przerobka istniejacych skryptow.

Moj plik losowanie.php wyglada nastepujaco:

Kod
<?


$text=array(
1 => 'zdanie1',
2 => 'zdanie2',
...
65335 => 'zdanie65335',
65336 => 'zdanie65336'

);

// inicjujemy generator liczb losowych
srand((double) microtime() * 10000000);

// sprawdzamy ilość tekstów w tablicy
$ile = count($text);

// losujemy liczbę
$losowa = rand(1, $ile);

// wyświetlamy tekst
echo $text[$losowa];

?>


Czy moglbys mi napisac jak sprawic, aby utworzyc tutaj funkcje losuj()?

Tak sie teraz zastanawiam, ze tablica, jaka zawiera ten plik jest strasznie duza ( w tej chwili zawiera 65336 zdań). Czy jej rozmiar moze byc powodem przerywania pracy skryptu?

Ponownie, z gory bardzo dziekuje za pomoc.
Go to the top of the page
+Quote Post
Hazel
post
Post #4





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


  1. <?php
  2. function losuj($tablica)
  3. {
  4. $losowa = rand(0, count($tablica));
  5. return $tablica[$losowa];
  6. }
  7. ?>


No i w tym drugim pliku musisz umieścić:
  1. <?php
  2. $text = array(....) // definicję tablicy przenieś z losowanie.php do tego drugiego pliku
  3. include 'losowanie.php'; // dołączenie pliku losowanie.php
  4. srand((double) microtime() * 10000000);
  5. // inicjujemy generator liczb losowych
  6. // to nie jest konieczne - u mnie na przykład funkcja rand() działa bez zainicjowania
  7. // generatora, ale nie jestem pewien, czy automatyczna inincjacja jest domyślnym ustawieniem Apache'a
  8. // czy nie, więc lepiej niech ta linijka tam na wszelki wypadek się znajdzie...
  9. for ($itt=0; $i<$ilosc_liczb; $i++)
  10. {
  11. losuj($text);
  12. }
  13. ?>


Nie wiem, czy to, że tablica ma 65336 elementów, może mieć znaczenie, nigdy chyba nie pracowałem z takimi tablicami, jeśli chcesz to wiedzieć, to niech lepiej ktoś bardziej kompetentny Ci to napisze...
Ale myślę, że większe znaczenie by miało, gdyby tablica miała 65536 elementów tongue.gif (65536 = 2^16)

Ten post edytował Hazel 18.08.2007, 18:56:26


--------------------
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 Aktualny czas: 21.08.2025 - 12:06