php failed to open stream: Too many open files

Paweł Muszyński pmuch w zamek.szczecin.pl
Sob, 29 Sie 2009, 15:34:56 CEST


Miesiu pisze:
> Dnia 29-08-2009 o godz. 14:34 Paweł Muszyński napisał(a):
>>> skrypt w php jest odpalany z konsoli (docelowo z crona - tak mi pasuje).
>>>  Skrypt tuz przed końcem rekurencyjnie odpala sam siebie - przez exec
>>> lub system do wyboru - u mnie jedno i drugie działa tak samo.
>>>
>>> exec (" php -f plik.php parametr & "); - wrzuca w tło
>>>
>>> inkludów już nie ma - wkleiłem je w treść skryptu - ale to nic nie dało.
>>>
>>> każde kolejne rekurencyjne wywołanie niestety ale nadal trzyma otwarte
>>> pliki - czy raczej ich licznik.
>>>
>>> lsof -p pid-skryptu | wc -l
>>> (i tu licznik rośnie)
>>>
>>> apache'a nie uzywam do tego.
> 
>> A ta nieskończona rekursywność to celowa jest?
>> Bo jak dla mnie to jakiś błąd koncepcyjny...
> 
> Ma koniec - pasowało mi zrobić rekurencję - ale koniec ma.
> 
> najchętniej to widzę - ale nie wiem jak to zrobić - aly proces potomny - 
> nie był potomny ale niezalezny - wtedy licznik otwartych plików by 
> zaczynał od zera.
> 
> 
No jeśli Ci się kończy licznik plików, to jak dla mnie ta rekurencja 
jest mało przemyślana - jeśli schodzi Ci 1024 poziomy wgłąb. Rozwiążesz 
problem z ilością otwartych plików, to będziesz miał problem z 
wielkością stosu albo jeszcze z czymś innym

A jeśli i tak chcesz wywoływać ten skrypt z crona - nie możesz przerobić 
algorytmu tak, by był iteracyjny, i np. zapisywał na koniec parametr do 
następnego wywołania do bazy? Wtedy kolejne odpalenie z crona na 
początek łączyłoby się z bazą i sprawdzało parametr...

Nie wiem, co ten Twój program ma robić, ale czuję, że zabrnąłeś w jakąś 
ślepą uliczkę.

-- 
Paweł Muszyński


Więcej informacji o liście dyskusyjnej pld-users-pl