Lucrăm cu o gamă largă de date în PHP

Pagina SHRA personale, blog-ul frilensera, dezvoltator web în PHP. Aici am împărtăși experiențele și gândurile mele, petrec experimente pe oameni, aduna dovezi intangibile ale propriei sale prostie. Folosind exemplul de cod de pe acest site, acceptați întreaga responsabilitate pentru consecințele utilizării lor, inclusiv sănătatea mintală și interesele părților terțe.

Blog / PHP / Noi lucram cu o gamă largă de date în PHP

Problema în 2038.

Lucrul cu datele până la 2038 (anterior 1900).

Nu aș începe această conversație în cazul în care nu a prezentat nici o soluție.

În primul rând, cu siguranță, una dintre soluțiile vor fi extinderea variabilei de până la 64 de biți, care va acoperi perioada până la 292 miliarde. Anii. Deci, păstra compatibilitatea cu programe mai vechi, cu toate că acestea vor trebui să fie recompilate, care realizează actualizarea bazelor de date, etc.

Și chiar și după 250 de miliarde. Ani, variabila se va extinde la 1.024 de biți, în cazul în cazul în care universul încă nu se dezvoltă în cicluri (câteva cuvinte despre Big Bang) :).

Trebuie să se obișnuiască să lucreze într-un interval mai mare de timp. Atâta timp cât omenirea trăiește pe pământ, atunci suntem perfect ori ciclu anual naturale (numărând pământul se rotește în jurul soarelui). Este greu de spus când vom abandona un astfel de calcul. Cel mai probabil pentru o lungă perioadă de timp după colonizarea altor lumi, strămoșii noștri va lua timp în ani pe Pământ. În orice caz, în cazul în care ciclurile de un an este puțin probabil să continue în viitorul îndepărtat, perioada de 1 secundă nu are nici premise pentru înlocuirea și apoi. Ie depozitare temporară sub formă de numărul de secunde de la ce moment istoric, va avea loc.

Extinderea biți, cu toate acestea, nu rezolvă o altă problemă - data depunerii până la 1900. Mi-ar folosi acest lucru pentru valori negative, dar până în prezent nu. Poate mai târziu :) ghici.

Revenind la teorie la practică, și anume, PHP, avem două soluții bune. Unul dintre ele - este utilizarea de clasa DateTime. A doua soluție ne găsim, având în vedere ceea ce este de obicei folosit în conjuncție PHP. Aceasta este - o bază de date în care avem de multe ori un mare arsenal de a lucra cu acest tip de date ca DATETIME. Voi examina MySQL, pentru specificul bazei de date.

clasa PHP DateTime.

Această clasă vă permite să lucreze în timp, în intervalul de „0000-00-00 00:00:00“ la „9999-12-31 23:59:59“. Ceea ce este cu mult dincolo de epoca unix. Această clasă funcționează, în general, chiar și în gamă mai largă. Încercați, de exemplu, că următorul cod:

Dar inițializa data de obiect mai vechi de 10.000 de ani nu reușești, pentru că presupunem că intervalul menționat mai sus este de lucru.

Deoarece formatul este compatibil cu funcția dată formatul de dată (), va fi capabil de a obține orice informație „obișnuită“ data.

DATETIME tip de date în MySQL.

Acest tip de timp de stocare cuprinde intervalul de timp (așa cum este documentat) din '01 / 01/1000 00:00:00 „la“ 23:59:59 9999-12-31' . 1000 de ani este mai mică decât prima opțiune :), dar mult mai largă epoca unix.

Calculele nu afectează depozitul de date, nu ne referim la tabele. Cererile vor fi efectuate foarte repede. Dar este încă un apel la sursa „externă“ de date (un alt program, bibliotecă). Trebuie să încercăm să reducă numărul de astfel de cereri. Serverul de baze de date poate fi amplasat pe un alt calculator, și trimitere la acesta se va deplasa în întreaga rețea.

Aici este un exemplu de o astfel de solicitare, în cazul în care vom efectua o serie de calcule avem nevoie de data și ora.