Fix lag
This commit is contained in:
@@ -179,4 +179,65 @@ ADD COLUMN pdf_filename VARCHAR(255) NULL;
|
||||
-- (validé côté PHP), pour les outils absents de Devicon (Proxmox, GLPI, FOG...)
|
||||
ALTER TABLE logo_banners
|
||||
ADD COLUMN icon VARCHAR(100) NULL AFTER name,
|
||||
MODIFY COLUMN logo_url VARCHAR(255) NULL;
|
||||
MODIFY COLUMN logo_url VARCHAR(255) NULL;
|
||||
|
||||
-- ============================================================
|
||||
-- Juillet 2026 (6) : sortie des PDF des tables projects/experiences/schools
|
||||
-- vers des tables associées dédiées, pour que les pages qui LISTENT ces
|
||||
-- éléments (admin.php, xp.php, projects.php...) n'aient plus à charger les
|
||||
-- PDF (jusqu'à 15 Mo chacun) en mémoire à chaque affichage. C'était la
|
||||
-- cause du ralentissement d'admin.php et de xp.php : ces pages faisaient
|
||||
-- un SELECT * qui remontait aussi tout le contenu binaire des PDF alors
|
||||
-- que seul le nom de fichier est utilisé dans les listes.
|
||||
--
|
||||
-- ÉTAPE 1/2 (non destructive) : crée les nouvelles tables et copie les PDF
|
||||
-- existants dedans. Les colonnes pdf_data / pdf_filename des tables
|
||||
-- d'origine ne sont PAS touchées à cette étape : aucune perte de donnée
|
||||
-- possible, elles restent en place comme copie de sécurité.
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS project_pdfs (
|
||||
project_id INT UNSIGNED NOT NULL,
|
||||
pdf_filename VARCHAR(255) NOT NULL,
|
||||
pdf_data LONGBLOB NOT NULL,
|
||||
PRIMARY KEY (project_id),
|
||||
CONSTRAINT fk_project_pdfs_project FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS experience_pdfs (
|
||||
experience_id INT UNSIGNED NOT NULL,
|
||||
pdf_filename VARCHAR(255) NOT NULL,
|
||||
pdf_data LONGBLOB NOT NULL,
|
||||
PRIMARY KEY (experience_id),
|
||||
CONSTRAINT fk_experience_pdfs_experience FOREIGN KEY (experience_id) REFERENCES experiences(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS school_pdfs (
|
||||
school_id INT UNSIGNED NOT NULL,
|
||||
pdf_filename VARCHAR(255) NOT NULL,
|
||||
pdf_data LONGBLOB NOT NULL,
|
||||
PRIMARY KEY (school_id),
|
||||
CONSTRAINT fk_school_pdfs_school FOREIGN KEY (school_id) REFERENCES schools(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Copie des PDF déjà en base vers les nouvelles tables (ne copie que les lignes qui ont
|
||||
-- effectivement un PDF ; ré-exécutable sans doublon grâce à la clé primaire = id du parent)
|
||||
INSERT IGNORE INTO project_pdfs (project_id, pdf_filename, pdf_data)
|
||||
SELECT id, pdf_filename, pdf_data FROM projects WHERE pdf_data IS NOT NULL;
|
||||
|
||||
INSERT IGNORE INTO experience_pdfs (experience_id, pdf_filename, pdf_data)
|
||||
SELECT id, pdf_filename, pdf_data FROM experiences WHERE pdf_data IS NOT NULL;
|
||||
|
||||
INSERT IGNORE INTO school_pdfs (school_id, pdf_filename, pdf_data)
|
||||
SELECT id, pdf_filename, pdf_data FROM schools WHERE pdf_data IS NOT NULL;
|
||||
|
||||
-- ============================================================
|
||||
-- ÉTAPE 2/2 (destructive, À NE PAS EXÉCUTER MAINTENANT) : à lancer plus
|
||||
-- tard, une fois que le site a été vérifié (listes, modification, suppression,
|
||||
-- lecteur PDF) et qu'on est sûr à 100% que tout fonctionne avec les
|
||||
-- nouvelles tables. Supprime les anciennes colonnes devenues inutiles.
|
||||
-- ============================================================
|
||||
|
||||
-- ALTER TABLE projects DROP COLUMN pdf_data, DROP COLUMN pdf_filename;
|
||||
-- ALTER TABLE experiences DROP COLUMN pdf_data, DROP COLUMN pdf_filename;
|
||||
-- ALTER TABLE schools DROP COLUMN pdf_data, DROP COLUMN pdf_filename;
|
||||
Reference in New Issue
Block a user