Puncte:1

Încercarea de a ajunge la capătul unei erori de memorie lipsită legată de baza de date

drapel cn

Am moștenit un site foarte problematic construit în Drupal 7. La instalarea site-ului în spațiul meu de dezvoltare, primesc eroarea 500 „Această pagină nu funcționează”. Privind jurnalele web, primesc acest mesaj:

lmu.[sitename].co.uk [Sam Apr 23 15:39:03 2022] [eroare] [client 86.174.32.32:0] AH01215: PHP eroare fatală: memorie lipsită (alocată 56098816) (a încercat să aloce 459743 octeți) în /home/sites/[sitename].co.uk/public_html/lmu/includes/database/database.inc pe linia 2324: /home/sites/[sitename].co.uk/public_html/lmu/index.php

Limita de memorie a fost 128M și acum este de 512M, dar primesc exact aceeași eroare cu aceleași numere etc.

Are asta de-a face cu ceva conținut în DB?

Editări suplimentare:

O altă problemă, poate legată, este că pe un alt server site-ul rulează, dar numai cu PHP 5.6 (atât versiunile actualizate, cât și cele neactualizate ale site-ului). Pe serverul căruia îi aparține această întrebare rulează și 5.6. Cu toate acestea, când încerc să folosesc 7.4, site-ul încă nu reușește, dar primesc un mesaj de eroare diferit legat de baza de date care ar putea oferi indicii suplimentare:

Excepție neprinsă aruncată în funcția de închidere.

PDOException: SQLSTATE[HY000]: Eroare generală: 2014 Nu se poate executa interogări în timp ce alte interogări fără tampon sunt active. Luați în considerare utilizarea PDOStatement::fetchAll(). Alternativ, dacă codul dvs. este numai pentru totdeauna va rula împotriva mysql, puteți activa interogarea tampon prin setare atributul PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.: DELETE FROM {semafor} WHERE (valoare = :db_condition_placeholder_0) ; Matrice ( [:db_condition_placeholder_0] => 15563655396262a9bd4cef06.08066829 ) în lock_release_all() (linia 269 din /home/sites/[sitename].co.uk/public_html/lmu/includes/lock.inc).

drapel cn
Practic, este imposibil de spus fără profilarea cererii de pagină - dacă cantitatea de octeți alocată a fost mare, probabil că ai putea fi suficient de încrezător pentru a indica că acel script este vinovat, dar nu este, este de 0,5 MB. . Deci, fie acel apel db a fost izolat și doar ratatul ghinionist care a încercat să obțină o memorie când tot restul a dispărut, fie acel apel db este invocat recursiv/exhaustiv de către altceva care împiedică recuperarea memoriei. În orice caz, trebuie să reîntoarceți traseul stivei și să vedeți ce se întâmplă
drapel id
De acord. Ultimul cod pentru a aloca memorie nu este necesar vinovat. Dar ar putea fi.
drapel cn
Noroc @Clive. Nu sunt sigur de cea mai bună procedură pentru a investiga stiva în acest context (vin dintr-un fundal frontend, vă rog să mă iertați!). Poti te rog sa-mi dai cateva indicatii daca se poate?
drapel cn
Oh, am ratat puțin „aceleași numere” înainte, asta este de fapt destul de esențial, rău, ești convins în privința asta? Dacă da, 56098816 este exact 56 MB, ceea ce sugerează că limita dvs. PHP nu este ceea ce credeți că este... poate că editați fișierul php.ini greșit sau nu ați repornit php-fpm/apache după ce l-ați modificat?
drapel cn
De asemenea, asigurați-vă că verificați limita în contextul potrivit - nu este neobișnuit, în unele medii, să existe configurații PHP diferite pentru CLI vs web, așa că dacă obțineți 128 MB pe linia de comandă, nu înseamnă neapărat că serverul web primește aceeași sumă. Cel mai simplu mod de a verifica este să adăugați un test.php în rădăcina web care conține `
drapel cn
@Clive Noroc -
drapel cn
Am adăugat câteva informații suplimentare la întrebare.
drapel cn
Posibil o problemă cu memoria serverului: https://stackoverflow.com/questions/13955914/php-out-of-memory-error-even-though-memory-limit-not-reached

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.