docker - 如何在 apache2 上使用 pthread?

标签 docker pthreads apache2 ubuntu-16.04 php-7.0

我需要在 apache2 中将 PHP-FPM 与 pthread 一起使用,以提高在 Ubuntu 16.04 中运行的 Prestashop 1.6 商店的性能。

我做了很多意图。这是最后两个测试:

1) 我能够在 XAMP v3.2.1 中使用 pthread 运行并行 PHP 代码,但它会重新启动 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 的 docker 容器,以避免依赖问题和版本错误。但是,当我使用 pthread 代码访问 PHP 脚本时,我的浏览器中出现以下错误: fatal error :在第 5 行的/var/www/html/test.php 中找不到类“Threaded”
此脚本与教程中的脚本相同,其中 pthread 是从 CLI 测试的。

毕竟,我注意到 pthread 仅适用于 CLI。这在以下链接中进行了解释:
https://serverfault.com/questions/748001/the-apache2handler-sapi-is-not-supported-by-pthreads
https://github.com/krakjoe/pthreads

所以我的问题是:

1) 有什么方法可以在 PHP-FPM 中使用 Pthread 和 apache 吗?

2) 有没有其他方法可以提高 PHP 的速度? (我已经尝试过:APC 和 APCU。)

预先感谢您的关注。

最佳答案

我的回答与 pthread 没有直接关系,但截至 2019 年 4 月,而不是使用 Apache 2,以获得 PrestaShop 商店的最佳性能,

我推荐以下:

  • Nginx 1.16
  • PHP FPM 7.3(与 7.0 相比性能大幅提升),配置了专用池
  • MariaDB 10.3(可选:使用两台服务器构建主/从设置)

  • 然后:
  • 启用 Gzip
  • 为静态内容启用缓存和/或使用 CDN 提供这些文件
  • 在 PrestaShop 管理面板中启用 CCC(缩小/压缩/缓存)

  • 最后:
  • 启用 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
  • 关于docker - 如何在 apache2 上使用 pthread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55838990/

    相关文章:

    mysql - docker for windows & mysql 官方容器

    amazon-web-services - AWS ECS和Docker:无法通过tcp://<MY-ID> .dkr.ecr.us-east-1.amazonaws.com:2375/<PROJECT>连接到Docker守护程序

    docker - 无法使用Docker容器中的ENV变量在docker-compose文件中执行HEALTHCHECKS

    c++ - 执行时使用boost::asio::deadline_timer时出错

    php - 在 Mac OS X Lion 上启用 Xdebug

    azure - 如何在 docker-compose 中为 Azure blob 存储配置目标容器?

    c++ - pthread休眠函数,cpu消耗

    c - 为什么需要 '-lpthread' ?

    php - .htaccess:GET 变量在重写中丢失

    javascript - 是否可以让 MySQL 下的数据库将行导出到可通过 Web 访问的托管文件夹中?