Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt nagle przerywa swoje dzialania po pierwszym 'include'
Forum PHP.pl > Forum > PHP
mih
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!
Hazel
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).
mih
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.
Hazel
  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)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.