Hvorfor var min side nede i 2 dage?

I forgårs ville jeg opdatere min hjemmeside med den største opdatering indtil nu men da opdateringen gik online gik hjemmesiden i knæ, hvad gik der galt og hvordan rettede jeg problemet.

 

Opdateringen

Opdateringen bestod mest af det nye CMS og Framework jeg har lavet. Jeg laver en blogpost om lidt der forklare mit nye CMS og mit Framework meget mere detaljeret.

Udover mit CMS og Framework bestod opdateringen også af en lille SEO opdatering med ændret keywords.

Jeg har ændret hvordan forside, blog, portfolio hiver data ud fra databasen.

Det var egentlig opdateringen, selve frontend delen var der ingen problemer med men mit CMS og Framework fik min hjemmeside til at gå ned.

 

Hvad gik der galt

En af de nye ting i mit CMS er dynamic paths, dvs. istedet for jeg ved hver eneste require skal skrive den præcise sti til den fil jeg vil require fra den fil man befinder sig i, kunne mit CMS selv finde ud af at tage fra root folderen og finde filerne.

Det var den største fejl der skete fordi på min lokale maskine og min host køre med forskellige config filer så min localhost kan acceptere nogle path’s hvor imod min host absolut ikke ville køre med de paths og derfor gik hele min side ned, men jeg fandt hurtigt problemet og løste det.

Næste problem var User objektet, når jeg hentede brugerens accesTyper kom jeg til at hente ud fra det forkerte id så brugeren fik aldrig de rigtige accesTyper men det var 2 linjer kode der lige skulle ændres.

 

Opdatering af database strukturen

Jeg har også opdateret min database struktur så den er mere “ren”, et lille problem jeg fik var at min gamle tabel struktur for mine blogposts, der var tidspunkt og dato delt op i 2 kolonner og stod som 00:00 og 00/00/0000 altså tallene stod som rigtige tidspunkter og rigtige datoer og det er bøvlet at arbejde med hvis man skal lave nogle beregninger på datoer og tidspunkter så min opdatering bestod i at istedet for 2 kolonner med tidspunkt og dato skulle det nu være 1 kolonne med et unix timestamp.

 

Problem 1

Eksportere blogposts dataen fra den gamle database, men i hvilket format, fordi jeg skal jo konvertere datoerne til den nye dato type når de skal importeres id.

Jeg valgte at eksportere mine blogpost fra den gamle database af typen SQL i formatet

INSERT INTO tbl_name (col_A,col_B) VALUES (1,2,3), (4,5,6), (7,8,9)

 

Problem 2

Jeg har nu min eksporteret data, men problemet er nu at jeg har en ekstrem lang SQL insert sætning med 2 kolonner “tidspunkt og dato” og med hver sine data “00:00 og 00/00/0000”

Så hvordan pokker ændre jeg hele den sætning til at

  1. Tage tidspunkter og dato og lave om til unix timestamp og ligger dem sammen til en brugbar timestamp ?
  2. Tilføje en kolonne der hedder timeStamp og indsætte den nye unix timestamp
  3. Fjerne de to ubrugbare kolonner samt deres data

Well… jeg kunne gøre det manuelt men jeg kunne også lade være 😛

Jeg valgte at lave et script der løste alle mine 3 problemer her, så jeg kunne sidde og slappe af i min stol og se min computer arbejde 🙂

Sådan her set mit script ud

<?php

 $Vdata = file_get_contents('blogSQLCommand.txt');
 $newContent = $Vdata;

 //Example data '10/06/2011'
 $DATEpreg_match_content;
 $DATEpreg_match_num = preg_match_all("/[[\'][0-9]{2}\/[0-9]{2}\/[0-9]{4}[\']]*/", $Vdata, $DATEpreg_match_content, PREG_OFFSET_CAPTURE);
 
 //Example data '17:54'
 $TIMEpreg_match_content;
 $TIMEpreg_match_num = preg_match_all("/[[\'][0-9]{2}:[0-9]{2}[\']]*/", $Vdata, $TIMEpreg_match_content, PREG_OFFSET_CAPTURE); 
 
 //Loop through the array
 for ($i=0; $i<count($DATEpreg_match_content[0]); $i++)
 {
 //Get date into usefull date
 $replaceSlash = str_replace('/', '-', $DATEpreg_match_content[0][$i][0]);
 $replaceDing = str_replace('\'', '', $replaceSlash);
 $split = explode('-', $replaceDing);
 $month = $split[1];
 $day = $split[0];
 $year = $split[2];
 
 //Make time into usefull time
 $replaceDing = str_replace('\'', '', $TIMEpreg_match_content[0][$i][0]);
 $split = explode(':', $replaceDing);
 $hours = $split[0];
 $minutes = $split[1]; 

 //Make time and date into usefull unix timeStamp
 $DATEpreg_match_content[0][$i][2] = mktime($hours, $minutes, 0, $month, $day, $year);
 
 /*
 Get SQL command and replace date with the correct unix timestamp which both have date and time
 Remove the time from the SQL command
 Remove the tidspunkt coloumn from the SQL command
 Put the new SQL command into $newContent
 */
 $newContent = str_replace($DATEpreg_match_content[0][$i][0], $DATEpreg_match_content[0][$i][2], $newContent);
 $newContent = preg_replace("/[[\'][0-9]{2}:[0-9]{2}[\'][,]]*/", "", $newContent);
 $newContent = str_replace("`tidspunkt`, ", "", $newContent);
 }

 //Create finished SQL command
 $file = fopen ("done.txt", "w+");
 fwrite($file, $newContent);
 
?>

Det virkede perfect, nu kunne jeg bare importere done.txt i min nye database 🙂

 

Problem 3

Mit nye CMS har en indbygget wysiwyg editor, det havde mit gamle CMS ikke så mine gamle blog posts var sat op på en helt anderledes måde end de bliver nu med den nye wysiwyg editor.

Jeg kunne sagtens have lavet et script der ændrede mine gamle blog posts men eftersom jeg ikke er den bedste i verden til at opsætte blog posts pænt så fik jeg hjælp af min gode ven Daniel, han fik en bruger i mit CMS så han kunne hjælpe mig med at sætte mine blog posts op korrekt.

Tak skal du have Daniel.

 

Kim-CV.com køre igen!

Så efter at blive sur på mig selv fordi det ikke fungerede med det samme da jeg uploadede og efter 2 dages arbejde så funker det hele igen 🙂

Min næste blog post vil jeg forklare meget mere detaljeret om mit CMS og mit Framework