2012-12-29 5 views
5

Mam problemy z Pthreads PHP extension. Skompilowałem PHP z obsługą ZTS (--enable-maintainer-zts) i zainstalowałem pthreads przez pecl, a także próbowałem ręcznie skompilować rozszerzenie.Jak używać rozszerzenia PHP Pthreads w Ubuntu

Wygląda na to, że tak naprawdę nie wiem, jak z niego korzystać. Sądziłem, że będę mógł używać klasy Thread w PHP, tak jak każdej innej wbudowanej klasie, ale bez powodzenia, ponieważ PHP tego nie rozpoznaje. Wydaje się, że funkcje POSIX działają.

używam Ubuntu 12.10 serwera 64-bitowego z mod_php 5.4.6.

+0

Uczyłem dziennik błędów apache i wydaje się, że pthreads.so nie mogą być ładowane bo jest nieznany symbol: sapi_globals_id ... Próbowałem również skompilować PHP z pthreads jako rozszerzenie statyczne i nie ma różnicy. –

+0

Dokumentacja wyraźnie stwierdza, że ​​ma wartość 5.3. Czy możemy założyć, że przez "5.6.4" miałeś na myśli "5.4.6"? Jeśli tak, spróbuj przejść do 5.3 z 5.4 i sprawdź, czy działa. Jeśli tak, zechcesz zgłosić problem z opiekunem na temat obsługi 5.4. – Charles

+0

Tak, to był literówka, używam PHP 5.4.6. W tej chwili pthreads działa. –

Odpowiedz

3

Jeśli nie możesz uzyskać dostępu do klas rozszerzeń, to nie jest on ładowany.

Chyba otwarty raport o błędzie, do którego ja odpowiedziałem, że linia configure jest źle sformułowany.

Linia configure chcesz korzystać to:

./configure --enable-pthreads --enable-maintainer-zts 

Powyższe polecenie zbuduje pthreads jako DSO.

./configure --enable-pthreads=static --enable-maintainer-zts 

Powyższe polecenie będzie statycznie budować pthreads na PHP.

Oba są równie obsługiwane przez 5.3, 5.4, a nawet 5.5.

Dodatkowo, jeśli są nadpisywania instalacji systemu należy użyć konkretnego --prefix, na przykład, jeśli php wykonywalny jest na /usr/bin (co można ustalić z „który php”), a następnie --prefix=/usr zastąpi instalację systemu .

Clean się swoimi starymi instalacjami (robią odinstaluj jeśli źródła są jeszcze dostępne). Zacznij od nowa, upewnij się, że nadpisałeś instalację systemu lub całkowicie go izolowałeś.

Proszę zaktualizować raport o błędzie, gdy pracował go.

+0

Cóż, zainstalowałem ponownie cały system Ubuntu i statycznie go budowałem za pomocą polecenia, które zasugerowałeś (--enable-pthreads = static). W tej chwili nie ma żadnych problemów, więc wygląda na to, że w konfiguracji PHP wystąpiły nieszczęścia. Dziękuję, że mi pomogłeś. –

+0

Czy ZTS musi być włączone dla wszystkich zainstalowanych wersji PHP (np. CGI, CLI i SAPI/Apache)? Lub jeśli planuję użyć pthreads tylko dla CLI, czy mogę zostawić ZTS wyłączony dla innych? – robguinness

+0

Wszędzie, gdzie jest załadowany pthreads, wymaga ZTS, możesz zbudować izolowaną instancję PHP z obsługą pthreadów, jeśli chcesz ... –