Am continuat să explic problema și scenariul puțin complex pentru cunoștințele mele limitate.
inițial am crezut că este o problemă asociată cu performanța scripturilor și a interogărilor mele, așa că am creat această postare pe site în spaniolă: LEGĂTURĂ
dar după ce am cercetat cea mai mare parte a după-amiezii; Sunt pe cale să atribui totul unei configurări greșite a mediilor mele de dezvoltare.
Lucrez cu 2 dispozitive server:
Local:
- Windows 10
- Laragon Server
Dezvoltare:
în acest caz mă voi concentra asupra local:
Am configurat stiva laragon să accepte gazde virtuale și să rulez 2 versiuni de PHP (7.2 / 7.4)
Am urmat aceste 2 ghiduri: Link 1 ȘI Link 2
configurația mea apache:
Definiți SRVROOT „C:/laragon/bin/apache/httpd-2.4.47-win64-VS16”
ServerRoot „C:/laragon/bin/apache/httpd-2.4.47-win64-VS16”
Ascultă 80
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/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
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule version_module modules/mod_version.so
<IfModule unixd_module>
Daemonul utilizatorului
Daemon de grup
</IfModule>
ServerAdmin [email protected]
ServerNume Laragon
<Director />
AllowOverride nici unul
Solicitați refuzul tuturor
</Director>
DocumentRoot „C:/laragon/www”
<Directorul „C:/laragon/www”>
Opțiuni Indexuri FollowSymLinks Include ExecCGI
AllowOverride Nici unul
Solicitați toate acordate
</Director>
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
<Fișiere „.ht*”>
Solicitați refuzul tuturor
</Fișiere>
ErrorLog „logs/error.log”
Eroare LogLevel
<IfModule log_config_module>
LogFormat „%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinat
LogFormat „%h %l %u %t \”%r\” %>s %b” comun
<IfModule logio_module>
LogFormat „%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinat
</IfModule>
CustomLog „logs/access.log” comun
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ „${SRVROOT}/cgi-bin/”
</IfModule>
<IfModule cgid_module>
#
# ScriptSock: pe serverele cu fire de execuție, desemnați calea către UNIX
# socket folosit pentru a comunica cu demonul CGI al mod_cgid.
#
#Scriptsock cgisock
</IfModule>
<Directorul „${SRVROOT}/cgi-bin”>
AllowOverride Nici unul
Opțiuni Niciuna
Solicitați toate acordate
</Director>
<IfModule headers_module>
RequestHeader a dezactivat proxy-ul mai devreme
</IfModule>
<IfModule mime_module>
TypesConfig conf/mime.types
Aplicație AddType/x-compress .Z
Aplicație AddType/x-gzip .gz .tgz
</IfModule>
# Configurați mod_proxy_html pentru a înțelege HTML4/XHTML1
<IfModule proxy_html_module>
Includeți conf/extra/proxy-html.conf
</IfModule>
<IfModule ssl_module>
Pornire încorporată SSLRandomSeed
SSLRandomSeed conectați încorporat
</IfModule>
AcceptFilter http nici unul
AcceptFilter https niciunul
EnableSendfile Off
Activați MMAP dezactivat
IncludeOpțional „C:/laragon/etc/apache2/alias/*.conf”
IncludeOpțional „C:/laragon/etc/apache2/sites-enabled/*.conf”
Includeți „C:/laragon/etc/apache2/httpd-ssl.conf”
Includeți „C:/laragon/etc/apache2/mod_php.conf”
ScriptAlias /php72 „C:/laragon/bin/php/php72”
Aplicație de acțiune/x-httpd-php72-cgi /php72/php-cgi.exe
<Directorul „C:/laragon/bin/php/php72”>
AllowOverride Nici unul
Opțiuni Niciuna
Solicitați refuzul tuturor
<Fișiere „php-cgi.exe”>
Solicitați toate acordate
</Fișiere>
</Director>
gazdele virtuale:
<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>
Alias pentru phpmyadmin
Alias /phpmyadmin „C:/laragon/etc/apps/phpMyAdmin/”
<Directorul „C:/laragon/etc/apps/phpMyAdmin/”>
Opțiuni Indexuri FollowSymLinks MultiViews
AllowOverride all
Necesită local
</Director>
Configurare MySQL
[client]
#parola=parola_dvs
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/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
secure-file-priv=""
explicit_defaults_for_timestamp=1
datadir= "C:/laragon/data/mysql"
nume_tabele_minuscule=2
sql_mode=""
wait_timeout=28800
interactive_timeout=28800
[mysqldump]
rapid
max_allowed_packet=4096M
Configurație PHP pentru ambele versiuni (7.2/7.4)
file_uploads = Activat
upload_max_filesize = 4096M
max_file_uploads = 100
allow_url_fopen = Activat
limita_memorie = 3G
dimensiune_max_post = 600M
max_execution_time = 5000
max_input_time = 5000
max_input_vars = 5000
date.timezone= America/Panama
error_reporting = E_ALL
display_errors = pornit
display_startup_errors = activat
html_errors = Activat
session.gc_maxlifetime = 2592000
session.cache_expire = 2592000
După cum puteți vedea, servesc implicit php 7.4 folosind apache handler 2.0; Servim php 7.2 folosind un alias.
- phpmyadmin => php 7.4 Apache Handler 2.0
- test1.me => php 7.2 CGI/FastCGI
jurnalele de erori ale MySQL:
2021-10-02T04:26:59.472441Z 35 [Notă] Conexiune întreruptă 35 la db: avipac_dbproducts utilizator: gazdă „rădăcină”: „localhost” (A apărut o eroare la scrierea pachetelor de comunicare)
jurnalele de erori ale Apache:
[Vine Oct 01 23:22:17.806390 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] Scriptul a expirat înainte de returnarea antetelor: php-cgi.exe, referitor: http:// test1.me/
[Vine Oct 01 23:23:43.661155 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error: Dimensiunea memoriei permisă de 32721282 alocate de către 327212802 epuizate ) în D:\webdev\Local\test1\control\classgeneric\class.managerdb.php pe linia 111: C:/laragon/bin/php/php72/php-cgi.exe, referitor: http ://test1.me/
[Vine Oct 01 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error: Dimensiunea memoriei permisă de 32472126 alocate25 epuizate25 ) în Necunoscut pe linia 0: C:/laragon/bin/php/php72/php-cgi.exe, referitor: http://test1.me/
[Vine Oct 01 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error: Dimensiunea memoriei permisă de 3247212 alocate25 de către 3247212 alocate25 ) în Necunoscut pe linia 0: C:/laragon/bin/php/php72/php-cgi.exe, referitor: http://test1.me/
[Vine Oct 01 23:24:59.451291 2021] [cgi:error] [pid 3808:tid 1104] [client 127.0.0.1:53918] Scriptul a expirat înainte de returnarea antetelor: php-cgi.exe, referitor: http:// test1.me/
Accept cu siguranță că interogarea mysql este relativ mare pentru un mediu local pe Windows; dar problema este că aceeași interogare este executată de apache handler 2.0 și php 7.4 în mai puțin de 1 secundă ... dar în CGI / FastCGI se oprește când ajunge la timeout (180 secunde / 3 minute) ... am avut delicatețea de a seta aceleași setări pentru FastCGI și Apache Handler 2.0, dar nu conciv pentru că unul eșuează și celălalt nu.
Desigur, desigur, de aceea una dintre îndoielile mele este că îmi spun în configurația mea ce configurație am nevoie pentru a îmbunătăți FastCGI. Este ceea ce ignor în principal. (unde, cum și ce).
este posibil ca cineva să-mi spună în configurația mea ce configurație am nevoie pentru a îmbunătăți FastCGI. Este ceea ce ignor în principal. (unde, cum și ce) Chiar nu înțeleg de ce nu pot face Fast CGI, măcar să nu rupă și să funcționeze ca Apache...
Nu știu ce este în neregulă, ce am nevoie sau cum să rezolv aceste erori...
Știu că CGI / FastCGI durează mult și consumă multă memorie, dar nu știu de ce nu funcționează și Apache Handler funcționează corect
Sau există vreo modalitate de a folosi proxy Apache Handler 2.0 în loc să utilizați php-cgi prin alias FastCGI?
Imagini ilustrative
Apache Handler 2.0:
CGI/FastCGI:
ACTUALIZARE #1
Găsesc acest fișier de configurare:
Notă: presupun că acest fișier de configurare este important; dar nu am idee despre funcționalitatea sa sau despre ce lucruri ar trebui să adaug, să elimin sau să modific pentru ca FastCGI să se comporte ca Apache Handler 2.0.
LoadModule fcgid_module „C:/laragon/etc/apache2/modules/mod_fcgid-2.3.10-win64-VS16.so”
<IfModule fcgid_module>
FcgidInitialEnv PATH „C:/laragon/bin/php/php74;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;”
FcgidInitialEnv SystemRoot „C:/Windows”
FcgidInitialEnv SystemDrive „C:”
FcgidInitialEnv TEMP „C:/Windows/Temp”
FcgidInitialEnv TMP „C:/Windows/Temp”
FcgidInitialEnv windir „C:/Windows”
# 10 ore: în cazul în care aveți scripturi care rulează lung, creșteți FcgidIOTimeout
FcgidIOTimeout 36000
FcgidIdleTimeout 36000
FcgidProcessLifeTime 36000
FcgidBusyTimeout 36000
FcgidConnectTimeout 3600
FcgidMaxRequestsPerProcess 0
FcgidMaxProcesses 50
FcgidMaxRequestLen 81310720
# Locație php.ini:
# FcgidInitialEnv PHPRC „C:/laragon/bin/php/php74”
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 0
<Fișiere ~ "\.php$>"
AddHandler fcgid-script .php
Opțiuni +ExecCGI
FcgidWrapper „C:/laragon/bin/php/php74/php-cgi.exe” .php
</Fișiere>
</IfModule>