Я продолжаю объяснять проблему и сценарий, немного сложный для моих ограниченных знаний.
изначально я думал, что это какая-то проблема, связанная с производительностью моих скриптов и запросов, поэтому я создал этот пост на сайте на испанском языке: СОЕДИНЯТЬ
но после изучения большей части дня; Я собираюсь приписать все это неправильной настройке моей среды разработки.
Я работаю с сервером 2 устройств:
Местный:
- Windows 10
- Сервер Ларагон
Разработка:
в данном случае я сосредоточусь на местный:
Я настроил стек laragon для поддержки виртуальных хостов и запуска двух версий PHP (7.2/7.4).
я следую этим 2 руководствам: Ссылка 1 И Ссылка 2
моя конфигурация апача:
Определите SRVROOT "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"
Корневой сервер "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"
Слушай 80
Модули LoadModule access_compat_module/mod_access_compat.so
LoadModule functions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
Модули LoadModule allowmethods_module modules/mod_allowmethods.so
Модули LoadModule asis_module/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule модули authn_core_module/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
Модули загрузки authz_core_module/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
Модули загрузки cgi_module/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
Модули LoadModule env_module/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
Модули LoadModule isapi_module/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
Модули загрузки модуля mime_module/mod_mime.so
LoadModule модуль согласования_модуля модули/mod_negotiation.so
Модули LoadModule rewrite_module/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
Модуль загрузки socache_shmcb_module modules/mod_socache_shmcb.so
Модули LoadModule ssl_module/mod_ssl.so
LoadModule version_module modules/mod_version.so
<IfModule unixd_module>
Пользовательский демон
Групповой демон
</ЕслиМодуль>
Администратор сервера admin@example.com
ИмяСервера Ларагон
<Каталог />
AllowOverride нет
Требовать все отказано
</Каталог>
DocumentRoot "C:/laragon/www"
<Каталог "C:/laragon/www">
Индексы опционов FollowSymLinks включает ExecCGI
Аллововеррайд
Требовать все предоставленные
</Каталог>
<IfModule dir_module>
DirectoryIndex index.html index.php
</ЕслиМодуль>
<Файлы ".ht*">
Требовать все отказано
</файлы>
ErrorLog "журналы/error.log"
Ошибка лог-уровня
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" в сочетании
LogFormat "%h %l %u %t \"%r\" %>s %b" общий
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" в сочетании
</ЕслиМодуль>
CustomLog "logs/access.log" общий
</ЕслиМодуль>
<IfModule псевдоним_модуля>
Псевдоним сценария /cgi-bin/ "${SRVROOT}/cgi-bin/"
</ЕслиМодуль>
<IfModule cgid_module>
#
# ScriptSock: На многопоточных серверах укажите путь к
# сокет, используемый для связи с CGI-демоном mod_cgid.
#
#Scriptsock
</ЕслиМодуль>
<Каталог "${SRVROOT}/cgi-bin">
Аллововеррайд
Опции
Требовать все предоставленные
</Каталог>
<IfModule headers_module>
RequestHeader рано отключил прокси
</ЕслиМодуль>
<IfModule mime_module>
TypesConfig conf/mime.types
Приложение AddType/x-compress .Z
Приложение AddType/x-gzip .gz .tgz
</ЕслиМодуль>
# Настройте mod_proxy_html для понимания HTML4/XHTML1
<IfModule proxy_html_module>
Включить conf/extra/proxy-html.conf
</ЕслиМодуль>
<IfModule ssl_module>
Встроенный запуск SSLRandomSeed
Встроенное подключение SSLRandomSeed
</ЕслиМодуль>
AcceptFilter http нет
AcceptFilter https нет
EnableSendfile Выкл.
ВключитьMMAP выкл.
IncludeOptional "C:/laragon/etc/apache2/alias/*.conf"
IncludeOptional "C:/laragon/etc/apache2/sites-enabled/*.conf"
Включить "C:/laragon/etc/apache2/httpd-ssl.conf"
Включите "C:/laragon/etc/apache2/mod_php.conf"
ScriptAlias /php72 "C:/laragon/bin/php/php72"
Приложение действия/x-httpd-php72-cgi/php72/php-cgi.exe
<Каталог "C:/laragon/bin/php/php72">
Аллововеррайд
Опции
Требовать все отказано
<Файлы "php-cgi.exe">
Требовать все предоставленные
</файлы>
</Каталог>
виртуальные хосты:
<VirtualHost *:80>
DocumentRoot "D:/webdev/Local/test1/"
ServerName test1.me
ServerAlias *.test1.me
<Directory "D:/webdev/test1/">
AllowOverride All
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php72-cgi
</FilesMatch>
</VirtualHost>
Псевдоним phpmyadmin
Псевдоним /phpmyadmin "C:/laragon/etc/apps/phpMyAdmin/"
<Каталог "C:/laragon/etc/apps/phpMyAdmin/">
Опционы Индексы FollowSymLinks MultiViews
РазрешитьПереопределить все
Требовать местные
</Каталог>
Конфигурация MySQL
[клиент]
#password=ваш_пароль
порт=3306
сокет=/tmp/mysql.sock
[mysqld]
порт=3306
сокет=/tmp/mysql.sock
key_buffer_size = 512M
max_allowed_packet=4096M
table_open_cache=256
sort_buffer_size = 32M
read_buffer_size = 32M
read_rnd_buffer_size=32M
myisam_sort_buffer_size=128M
thread_cache_size = 16
безопасный-файл-priv=""
absolute_defaults_for_timestamp=1
datadir= "C:/laragon/data/mysql"
lower_case_table_names=2
sql_mode=""
ожидание_тайм-аут = 28800
интерактивный_тайм-аут = 28800
[mysqldump]
быстрый
max_allowed_packet=4096M
Конфигурация PHP для обеих версий (7.2/7.4)
file_uploads = Вкл.
upload_max_filesize = 4096M
max_file_uploads = 100
allow_url_fopen = Вкл.
memory_limit = 3G
post_max_size = 600M
максимальное_время_исполнения = 5000
максимальное_входное_время = 5000
max_input_vars = 5000
date.timezone= Америка/Панама
error_reporting = E_ALL
display_errors = вкл.
display_startup_errors = вкл.
html_errors = Вкл.
session.gc_maxlifetime = 2592000
session.cache_expire = 2592000
Как видите, я использую php 7.4 по умолчанию, используя обработчик apache 2.0; Я работаю с php 7.2, используя псевдоним.
- phpmyadmin => php 7.4 обработчик Apache 2.0
- test1.me => PHP 7.2 CGI/FastCGI
журналы ошибок MySQL:
2021-10-02T04:26:59.472441Z 35 [Примечание] Прервано соединение 35 с базой данных: пользователь avipac_dbproducts: «root» хост: «localhost» (ошибка при записи пакетов связи)
журналы ошибок Apache:
[Пт, 01 октября, 23:22:17.806390 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] Время ожидания сценария истекло перед возвратом заголовков: php-cgi.exe, referer: http:// test1.me/
[Пт, 01 октября, 23:23:43.661155 2021] [cgi:error] [pid 3808:tid 1108] [клиент 127.0.0.1:61857] AH01215: Неустранимая ошибка PHP: допустимый размер памяти 3221225472 байт исчерпан (попытка выделить 20480 байт ) в D:\webdev\Local\test1\control\classgeneric\class.managerdb.php в строке 111: C:/laragon/bin/php/php72/php-cgi.exe, реферер: http ://test1.me/
[Пт, 01 октября, 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [клиент 127.0.0.1:61857] AH01215: Неустранимая ошибка PHP: допустимый размер памяти 3221225472 байт исчерпан (попытка выделить 65536 байт ) в Unknown в строке 0: C:/laragon/bin/php/php72/php-cgi.exe, реферер: http://test1.me/
[Пт, 01 октября, 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: Неустранимая ошибка PHP: допустимый размер памяти 3221225472 байт исчерпан (попытка выделить 24576 байт ) в Unknown в строке 0: C:/laragon/bin/php/php72/php-cgi.exe, реферер: http://test1.me/
[Пт, 01 октября, 23:24:59.451291 2021] [cgi:error] [pid 3808:tid 1104] [client 127.0.0.1:53918] Время ожидания сценария истекло перед возвратом заголовков: php-cgi.exe, referer: http:// test1.me/
Я определенно согласен с тем, что запрос mysql относительно велик для локальной среды в Windows; но проблема в том, что тот же запрос выполняется обработчиком apache 2.0 и php 7.4 менее чем за 1 секунду... но в CGI/FastCGI он останавливается, когда достигает тайм-аута (180 секунд/3 минуты)... у меня было деликатность установки одинаковых настроек для FastCGI и Apache Handler 2.0, но не уступчивая, потому что один терпит неудачу, а другой нет.
Конечно, конечно, поэтому одно из моих сомнений в том, что они говорят мне в моей настройке, какая конфигурация мне нужна для улучшения FastCGI. Это то, что я в основном игнорирую. (где, как и что).
возможно, кто-то скажет мне в моей настройке, какая конфигурация мне нужна для улучшения FastCGI. Это то, что я в основном игнорирую. (где, как и что) Я правда не понимаю, почему я не могу сделать Fast CGI хотя бы не ломающимся и работающим как Apache...
Я не знаю, что не так, что мне нужно или как решить эти ошибки...
Я знаю, что CGI/FastCGI занимает много времени и потребляет много памяти, но я не знаю, почему это не работает, а обработчик Apache работает правильно.
Или существует какой-либо способ прокси-сервера Apache Handler 2.0 вместо использования php-cgi через псевдоним FastCGI?
Иллюстративные изображения
Обработчик Apache 2.0:

CGI/FastCGI:


ОБНОВЛЕНИЕ №1
я нахожу этот файл конфигурации:
Примечание. Я предполагаю, что этот файл конфигурации важен; но я понятия не имею о его функциональности или о том, что я должен добавить, удалить или изменить, чтобы заставить FastCGI вести себя как Apache Handler 2.0.
LoadModule fcgid_module "C:/laragon/etc/apache2/modules/mod_fcgid-2.3.10-win64-VS16.so"
<IfModule fcgid_module>
FcgidInitialEnv ПУТЬ "C:/laragon/bin/php/php74;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv системный диск "C:"
FcgidInitialEnv TEMP "C:/Windows/Temp"
FcgidInitialEnv TMP "C:/Windows/Temp"
FcgidInitialEnv в папке "C:/Windows"
# 10 часов: если у вас долго выполняются скрипты, увеличьте FcgidIOTimeout
FcgidIOTimeout 36000
Фкгидлетимеаут 36000
Фкгидпроцесслайфтайм 36000
FcgidBusyTimeout 36000
FcgidConnectTimeout 3600
FcgidMaxRequestsPerProcess 0
Фкгидмакспроцессес 50
FcgidMaxRequestLen 81310720
# Расположение php.ini:
# FcgidInitialEnv PHPRC "C:/laragon/bin/php/php74"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 0
<Файлы ~ "\.php$>"
AddHandler fcgid-скрипт .php
Опции +ExecCGI
FcgidWrapper "C:/laragon/bin/php/php74/php-cgi.exe" .php
</файлы>
</ЕслиМодуль>