Как я могу использовать pthread на apache2? - PullRequest
1 голос
/ 25 апреля 2019

Мне нужно использовать PHP-FPM с pthread в apache2, чтобы улучшить производительность в магазине Prestashop 1.6, работающем в Ubuntu 16.04.

Я сделал много намерений. Вот последние два теста:

1) Мне удалось запустить параллельный код PHP с использованием pthread в XAMP v3.2.1, но он перезапускает сервер apache. Я думаю, что это связано с тем, что в XAMP apache уже использует рабочие потоки. (У меня есть вопрос по этому поводу здесь: https://askubuntu.com/questions/1129449/is-apache2-using-threads-or-process-in-ubuntu-18-04)

2) Я скомпилировал PHP 7.0.33, следуя этому руководству: https://blog.programster.org/install-php-7-0-with-pthreads-on-ubuntu-16.04 Я использовал докер-контейнер с базой Ubuntu 16.04, чтобы избежать проблем с зависимостями и ошибок версий. Однако в моем браузере появляется следующая ошибка при доступе к PHP-сценарию с кодом pthread: Неустранимая ошибка: класс 'Threaded' не найден в /var/www/html/test.php в строке 5 Этот скрипт такой же, как и в учебнике, где pthread тестируется из CLI.

После всего этого я заметил, что pthread предназначен только для CLI. Это объясняется в следующих ссылках: https://serverfault.com/questions/748001/the-apache2handler-sapi-is-not-supported-by-pthreads https://github.com/krakjoe/pthreads

Итак, мои вопросы:

1) Есть ли способ использовать Pthread в PHP-FPM с apache?

2) Есть ли альтернатива для повышения скорости в PHP? (Я уже пробовал с: APC и APCU.)

Заранее благодарю за внимание.

1 Ответ

1 голос
/ 25 апреля 2019

Мой ответ не имеет прямого отношения к pthread, однако, по состоянию на апрель 2019 года, вместо использования Apache 2, чтобы получить максимальную производительность для вашего магазина PrestaShop,

Я бы порекомендовал следующее:

  • Nginx 1.16
  • PHP FPM 7.3 (значительное повышение производительности по сравнению с 7.0), настроенный с выделенным пулом
  • MariaDB 10.3 (необязательно: сборка master / slave с двумя серверами)

Тогда:

  • Включить Gzip
  • Включить кэш для статического содержимого и / или использовать CDN для обслуживания этих файлов
  • Включить CCC (минимизировать / сжать / кэшировать) в административной панели PrestaShop

И наконец:

  • Включите PHP Zend Opcache и используйте эти настройки (только в рабочей среде):

    [opcache] zend_extension=php_opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=1024 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=16229 opcache.validate_timestamps=0 opcache.revalidate_freq=0 opcache.fast_shutdown=1 opcache.save_comments=0 opcache.enable_file_override=1 opcache.log_verbosity_level=0 opcache.file_cache_consistency_checks=0 opcache.validate_permission=0 opcache.validate_root=0

...