php failed to open stream: Too many open files
Andrzej Mateja
amateja w pimpek.one.pl
Pią, 21 Sie 2009, 17:29:19 CEST
Miesiu pisze:
> Wszystko jedno - próbowałem nawet wywoływać skrypt przez
> exec("php -f skrypt parametry");
> lub
> system("php -f skrypt parametry");
> ale
> lsof -p proces | wc -l
> ciagle pokazuje, że licznik rośnie i jak dojdzie do 1024 to się wywala.
>
> Nie bardzo chcę zmieniać limit z 1024 na więcej - bo w wielu miejscach
> odradzają.
>
> Co mogę mieć źle, że php nie zamyka plików po sobie?
>
>
> Mieszko
AFAIK limit 1024 jest zaszyty w jajku. Poniżej 1024 możesz sobie grzebać
w /etc/sysconfig/system a i tak trzeba zrestartować maszynę. Powyżej to
już tylko przekompilowanie jądra.
"PHP nie zamyka plików po sobie" bo ich nie otwierasz tylko includujesz.
I jeden grzyb czy to robisz przez include, include_once, require, czy
require_once. To jest mechanizm do łączenia skryptu rozrzuconego po
wielu plikach w jedną całość. Zamknięcie załączanego pliku następuje po
zakończeniu przetwarzania zapytania.
Z chęcią Ci pomogę jak tylko będę umiał, ale kolego - zasysanie skryptów
PHP czy przez Apache, czy przez te wywołania, które opisałeś, dadzą
jeden i ten sam efekt. Więc problem leży przede wszystkim w tym jak
Twoje skrypty zostały zaprojektowane i napisane. No i musisz podać
trochę więcej szczegółów :). Jeśli się mylę to proszę mnie poprawić.
Z pozdrowieniami
Andrzej Mateja
amateja w pimpek.one.pl
Więcej informacji o liście dyskusyjnej pld-users-pl