sql >> Databáze >  >> RDS >> Mysql

únik paměti ve skriptu php

Tento únik paměti by byl problém pouze v případě, že zabíjí skript chybou „vyčerpání paměti“. PHP s radostí samo o sobě shromáždí všechny nepoužívané objekty/proměnné, ale sběratel nekopne, dokud nebude muset – shromažďování odpadu může být velmi nákladná operace.

Je normální, že využití paměti stoupá, i když neustále znovu používáte stejné objekty/proměnné – až když využití paměti překročí určitou úroveň, kolektor se spustí a uklidí dům.

Domnívám se, že byste mohli věci urychlit, pokud byste dávkovali ID uživatelů do skupin a vydávali méně aktualizací a každou z nich změnili více záznamů. např. proveďte následující:

UPDATE user_roundscores SET ursUpdDate=NOW() WHERE ursUserTeamIdFK IN (id1, id2, id3, id4, id5, etc...)

místo toho, abyste to dělali jednou aktualizací na uživatele. Méně zpátečních cest přes vrstvu rozhraní DB a více času na serveru =rychlejší běh.

Zvažte také dopad tohoto rozšíření na miliony uživatelů, jak uvádíte v komentáři. Spuštění milionu jednotlivých aktualizací zabere netriviální dobu, takže NOW() nebude "konstanta". Pokud úplné spuštění zabere 5 minut, získáte širokou škálu ursUpdDate časová razítka. Můžete zvážit uložení do mezipaměti jednoho NOW() zavolejte proměnnou na straně serveru a vydejte aktualizace pro tuto proměnnou:

 SELECT @cachednow :p NOW();
 UPDATE .... SET ursUpDate = @cachednow WHERE ....;


  1. Použití jednoho ze sloupců ve složeném klíči jako cizího klíče

  2. 3 způsoby, jak najít pozici podřetězce v řetězci v MySQL

  3. Nelze převést hodnotu '2012-04-05 10:20:00' ze sloupce XX na TIMESTAMP

  4. Proč se přeruší konektor mysql (ztracené připojení k serveru MySQL během chyby dotazu)