PHP pthreads: Неустранимая ошибка: Class 'Thread' не найден

Я использую php5.5 на своем веб-сервере. Теперь я хочу использовать pthreads. Вот мой php config: http://dd19010.kasserver.com/infophp.php55

После реализации этого кода …..

<?php class AsyncOperation extends Thread { public function __construct($threadId) { $this->threadId = $threadId; } public function run() { printf("T %s: Sleeping 3sec\n", $this->threadId); sleep(3); printf("T %s: Hello World\n", $this->threadId); } } $start = microtime(true); for ($i = 1; $i <= 5; $i++) { $t[$i] = new AsyncOperation($i); $t[$i]->start(); } echo microtime(true) - $start . "\n"; echo "end\n"; ?> 

… проблема в этой самой ошибке: Fatal error: Class 'Thread' не найден . Должен ли я включать некоторые include_once или что-то подобное, чтобы заставить его работать? Что мне нужно сделать??

Ваша phpinfo показывает, что у вас есть php с отключением потока. Вам нужно установить версию php, которая является потокобезопасной для использования pthreads. Это может или не может исправить вашу текущую проблему.

Возможно, вам придется скопировать файл pthreadsVC2.dll в каталог bin вашего веб-сервиса.

 /etc/php55/fpm/ 

Вы ищете папку с php.ini в ней.

Убедитесь, что в файле php.ini добавлена ​​строка:

 extension=php_pthreads.dll 

Привет, я столкнулся с этой проблемой и смог ее решить.

Сначала рассмотрим версию VC вашего PHP и версию расширения VC. В моем я прикреплял расширение pthreads.dll с версией VC14 от http://windows.php.net/downloads/pecl/releases/pthreads/, но моя версия VC VC11. Ищите более низкую версию, соответствующую версии VC вашего PHP.

Во-вторых , возможно, вы пропустили шаг №3 на странице PHP. В нем указано, что вам нужно скопировать pthreadVC2.dll в другую папку. Вот полная инструкция.

  1. Узнайте, что такое ваша версия PHP Extension Build, используя phpinfo (). Вы можете использовать это : http: // localhost /? Phpinfo = 1

  2. Загрузите pthreads, которые соответствуют вашей версии php (32-разрядная или 64-разрядная версия) и расширению php-расширения (в настоящее время используется VC11). Используйте эту ссылку для загрузки – http://windows.php.net/downloads/pecl/releases/pthreads/

  3. Извлеките zip – переместите php_pthreads.dll в каталог bin \ php \ ext \. Переместите файл pthreadVC2.dll в каталог «bin \ php \». Переместите файл pthreadVC2.dll в каталог bin \ apache \ bin. Переместите файл pthreadVC2.dll в директорию 'C: \ windows \ system32'.

  4. Откройте php \ php.ini и добавьте расширение = php_pthreads.dll

Ссылка: https://secure.php.net/manual/en/pthreads.installation.php

Я использую WAMP и обнаружил, что pthreadVC2.dll должен перейти в папку Apache:

C: \ WAMP \ Bin \ Apache \ apache2.4.9 \ Bin

В отличие от того, что написано на README.md , вам не нужно иметь его в папке PHP, но php_pthreads.dll все равно должен перейти к:

C: \ WAMP \ Bin \ PHP \ php5.5.12 \ внутр

После этого выполните поиск в этом файле:

C: \ WAMP \ Bin \ Apache \ apache2.4.9 \ Bin \ php.ini

For ;extension=php_pgsql.dll и добавьте extension=php_pthreads.dll в новую строку после него (да, это bin \ php.ini в папке Apache, а не в папке PHP).

Выйдите из WAMP и запустите его снова. Теперь вы должны увидеть в меню WAMP в разделе PHP> PHP extensions , новое расширение php_pthreads .

Я думаю, вам нужно включить расширения в файл php.ini, потому что я не вижу его в конфиге. Вы можете видеть, что каждая библиотека имеет свой собственный раздел, такой как MySQL, но для потоков не существует. Я никогда не использовал темы, но это должно быть хорошим местом для начала.

По умолчанию потоки не реализованы в PHP, и, согласно вашей phpinfo, она не загружается. Ознакомьтесь с руководством по настройке и настройке модуля.