2009-10-01 13 views
17

Czytałem gdzieś, że czasami PHP po prostu nie jest wystarczająco szybkie i ten skompilowany kod musi czasem "robić ciężki lifting".Jak mogę używać kodu C++ do interakcji z PHP?

Co to jest api w C++, aby to zrobić?

+2

Przed patrząc mieszania C++ PHP, powiedziałbym profil i upewnij się, znajdź sekcję PHP, który jest powolny, a sprawdź, czy możesz najpierw poprawić to w PHP. Większość interfejsów, które pozwalają przejść z języka X na C++, będzie wyglądać dziwnie podczas pisania rozszerzenia w C++. – Calyth

Odpowiedz

32

Możesz dodać funkcje/klasy do PHP, zaprogramowane w C (i możesz zawinąć klasę C++ z C, jeśli dobrze pamiętam z artykułu, który czytałem jakiś czas temu), który może pozwolić ci na robienie pewnych rzeczy szybciej - jeśli dobrze zaprogramowany: nie ma potrzeby interpretowania kodu PHP; tylko wykonanie kodu maszynowego, który jest ogólnie o wiele szybszy.

Aby to zrobić, musisz rozwinąć rozszerzenie PHP.


Nie ma zbyt wiele Zasoby dostępne w Internecie o tym, ale to jedno może pomóc, aby rozpocząć:

, a konkretnie o C++ części, ten może pomóc też:


Jeśli jesteś naprawdę zainteresowany przez podmiot, a gotowy wydać trochę pieniędzy na nim, można również kupić książkę Extending and Embedding PHP(some pages are available as preview on Google Books) również); Widziałem kilka razy, że był książka czytać gdy zainteresowany na ten temat (W rzeczywistości, kupiłem go jakiś czas temu, a to ciekawa odczytu)

BTW, autor tej książki jest również autorem pierwszych czterech artykułów I związana ;-)


Nadzieja to pomaga ...
zabawy!

+0

Dzięki za te informacje - bardzo mi to pomogło! – qodeninja

+0

Czy te klasy C++ owinięte w PHP Extension działają szybciej niż przepisywanie ich w PHP? Jaka jest tego zaleta? –

+0

Dzięki za link .. Ładne artykuły – Confused

9

Można rzeczywiście execute skompilowane aplikacje bez jakiegokolwiek API:

$output = exec('/path/to/yourapp'); 

Poza tym, zawsze można napisać rozszerzenie PHP. Tutaj jest dobry przewodnik na temat: http://devzone.zend.com/article/1021

+2

+1 dla rozszerzenia PHP, ale -1 dla exec() – LiraNuna

+2

@Lira: Uh, dlaczego? – brianreavis

+0

exec() to duża luka w zabezpieczeniach, jeśli atakujący przekaże szkodliwą linię komend do funkcji, jeśli escapeshellarg() lub escapeshellcmd() nie są używane. – mosid

6

swig, the Simplified Wrapper and Interface Generator może pomóc owijania (istniejących) C++ do modułu PHP.

SWIG to narzędzie programistyczne łączące programy napisane w języku C i C++ z różnymi językami programowania wysokiego poziomu. SWIG jest używany w różnych językach, w tym w popularnych językach skryptowych, takich jak Perl, PHP, Python, Tcl i Ruby.
+0

Właśnie próbowałeś użyć SWIG do napisania bardzo prostego opakowania PHP. Pracował bezbłędnie bardzo łatwo. –

0

próbowałem SWIG? wydaje się dobrym rozwiązaniem twojego problemu !!

click here odwiedzić stronę haust (dokumentacja nie może być o wiele przyjaźni, choć!)