2017-02-24 8 views
0

Ich habe installiert pThreads durch die folgende http://php.net/manual/en/pthreads.installation.php von http://windows.php.net/downloads/pecl/releases/pthreads/Php Klasse 'Thread' nicht gefunden

Meine PHP-Info: - phpinfo();

PHP Version 5.6.30 Compiler: MSVC11 (Visual C++ 2012) Architektur: x86 Thema Sicherheit: aktiviert

Aber Fehler existiert noch ..

php -m Ausgabe #

php -m PHP Warnung: PHP Start: Pthreads: Nicht möglich t Modul kompiliert mit Modul API = 20121212 PHP kompiliert mit Modul API = 20131226 Diese Optionen müssen mat ch in Unknown in Zeile 0 Warnung: PHP Start: Pthreads: Nicht ini Modul kompiliert mit Modul API = 20121212 PHP kompiliert mit Modul API = 20131226 Diese Optionen müssen übereinstimmen in Unbekannt in Zeile 0 [PHP-Module] bcmath bz2 Kalender Kern ctype curl Datum dom ereg exif fileinfo Filter ftp gd gettext Hash iconv json libxml mbstring mcrypt mhash mysql mysqli mysqlnd odbc

+0

Sind Sie sicher, dass Sie 'extension = php_pthreads.dll' zur richtigen php.ini hinzugefügt haben? – Philipp

+0

Was ist Ihre 'php -m' Ausgabe? – hassan

+0

'Thread Sicherheit: aktiviert' ist nicht über Pthreads Erweiterung. – Furgas

Antwort

0

Während die Antwort von Hassan Ahmed erklärt, warum PThreads nicht in einer Webserverumgebung verwendet werden sollten, ist dies nicht die Ursache für den Fehler, den Sie erhalten.

Das Problem ist, dass die pthreads-Binärdatei, die Sie heruntergeladen haben, nicht für die von Ihnen verwendete PHP-Version erstellt wurde. Dies führt zu einer Diskrepanz zwischen der Binär-API der pthreads und der PHP-Modul-API, in die sie integriert ist. Gemessen an Ihrer PHP-Version sollten Sie die Version 2.0.10 von Pthreads verwenden, da dies die letzte stabile Version für PHP 5.6 war.

Beachten Sie, dass die Unterstützung für Pthreads für PHP 5.x-Versionen nicht länger beibehalten wird. Wenn Sie die neuesten Fehlerbehebungen und Funktionen benötigen, dann verwenden Sie PHP 7.x und Pthreads v3.

+0

danke @tpunt .. Hab es – Rajbir

1

pThreads ist nicht sicher für Web-Server-Umgebungen (source): -

Ich habe Pthreads im Web nicht deaktiviert Serverumgebungen, um dich zu nerven; I getan, um Sie sicher zu halten, und wird diese Entscheidung nicht rückgängig machen.

PHP und Apache bieten nicht die erforderliche API, um es ordnungsgemäß zu machen sicher.

Wenn ich Apache und PHP morgen gepatcht habe, um einige zusätzliche Hooks einzuschließen, um es richtig sicher zu machen, wären Sie nie in der Lage, es Skala zu machen.

Threads sind kein Dienstprogramm für einen Apache-Worker mpm-Server, sie sind Teil der Architektur der Software; Kommen und starten zusätzliche Threads innerhalb dieser Architektur ist leichtsinnig und zerstört die Fähigkeit dieser Architektur zu skalieren und zu betreiben, wie es vorgesehen war.

Es machte nie Sinn pThreads innerhalb Apache zu verwenden, verließ ich es in früheren Versionen in einem Versuch arbeiten, um die Eintrittsbarriere (jeder ist bequem mit einem Web-Server) zu senken. Das war ein Fehler, mein Fehler; Threading ist nicht einfach, wenn Sie versuchen, etwas inhärent kompliziert einfach zu machen, machen Sie es einfach dumm.

Erlauben Threads in Apache ohne die Fähigkeit zu gestartet werden machen entweder PHP oder Apache richtig auf die Änderung in der Architektur bewusst war missbräuchlich, und extrem dumm.

Noch ein Hinweis, dass apache2 standardmäßig in mpm_prefork Modus ausgeführt wird, was bedeutet, dass „Hey apache2, bitte Gabel für mich Multi Kindprozesse, aber mit ein Thread für jeden“

speak- -so ist