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