Autor Zpráva
Adam Sipla
Profil
Dobrý deň,
Mal by som dve otázky,prvá by bola ohľadom toho že by som potreboval php kód ktorý sa vykoná po určitej dobe od vykonania iného príkazu. Mám na mysli napríklad: Zapíšem do databáze áno a o 30dní sa tam daná hodnota prepíše na nie. Druhá otázka by bola ako zariadkovať automaticky výpis zo súborov typu xx.log nakoľko ak ho vypíšem tak nezariadkuje ako by mal ale píše sa skoro všetko do jedného riadku (chcel by som to aby keď je v súbore xx.log zariadkovanie aby bolo aj vo výpise) -> používaný kód na výpis prikladám k téme.

$file = "to/log.log"; 
    $data = file($file);

    $end = count($data);
    $first = $end-100000;

    $number = range($first,$end);

    foreach($number as $n) {
        $log_data .= $data[$n]."\n";
    }

    echo $log_data;

Vopred ďakujem za nápomocné odpovede! S pozdravom Adam Sipla.
mimochodec
Profil
Adam Sipla:
"po určitej dobe" - pokud máš k dispozici cron, vytvoř si v něm úlohu, která třeba každou hodinu spustí tvůj php skript. Ten zjistí, jestli už utekl požadovaný čas a udělá co je třeba.

Ohledně toho výpisu: té logice kolem nerozumím, ale to asi není potřeba. Jestli ten výpis generuješ jako stránku pro prohlížeč, zkus zalamovat pomocí <br>
Adam Sipla
Profil
mimochodec:
Dobre ale ako zistiť či ten čas už ubehol ? A k tomu druhému tak tam nieje problém že by som nevedel ako zariadkovať ale je tam problém v tom že ten log je generovaný automaticky a vyzerá asi takto:"
[dátum] [časť] bla bla bla
[dátum] [časť] bla bla bla"
Lenže ak ho vypíšem na stránku spraví to toto : "[dátum] [časť] bla bla bla [dátum] [časť] bla bla bla" (nemôžem to robiť ručne nakoľko ten log má voľakedy aj viac 10k riadkov)
mimochodec
Profil
Adam Sipla:
Dobre ale ako zistiť či ten čas už ubehol ?
Uložíš si třeba v databázi čas, který je pro tebe nulou. Pak tím cronem prověřuješ, jestli už požadovaný čas neuběhl.

S tím logem bez nějakého testování asi neporadím.
Keeehi
Profil
Adam Sipla:
První problém se mi nechce řešit, tak odpovím alespoň na druhý.
Když si zobrazíš zdrojový kód, tak zjistíš, že tam to od řádkování je. To jen prohlížeče zobrazují odřádkování jako mezeru*. Na výběr máš 2 možnosti. Nahradit znaky nového řádku nahradíš za <br>, což už prohlížeče neignorují (existuje na to v PHP funkce nl2br) a nebo donutíš prohlížeč, aby zobrazoval bílé znaky přesně tak jak jsou ve zdrojovém kódu. Toho docílíš pomocí přidání CSS white-space: pre; obalovému prvků.

* jakkoli dlouhou sekvenci jakýchkoliv býlích znaků zobrazí jako jednu mezeru. developer.mozilla.org/en-US/docs/Web/CSS/white-space
juriad
Profil
1. časované změny
Opravdu potřebuješ spustit PHP skript po nějakém čase?
Nestačilo by ti přidat do tabulky dva sloupce: platne_od a platne_do a vytvořit dva záznamy?
('ano', '2015-08-28', '2015-09-28'),
('ne', '2015-09-28', NULL)
A pak bys v databázi při selectu hledal jen záznamy, které vyhovují datumem.

Další možnost je mít tabulku s žurnálem, která obsahuje datum, akci a data, například:
('2015-09-28', 'change-answer-to-ne', 'id=394')
A v té bys hledal záznamy, které máš ten den zpracovat, o to se bude starat cron, který proběhne jednou denně. Po zpracování bys příslušné záznamy smazal.

2. řádkování
Můžeš použít funkci nl2br, nebo můžeš výpis obalit do elementu pre nebo mu v CSS změnit vlastnost white-space.
Adam Sipla
Profil
juriad:
1.časť Teoreticky stačilo ale ako to tam vpisovať automaticky nakoľko vpisovať takto cca 50 hodnôt denne ručne by bolo asi na nervy (mám na mysli dátum ukončenia).
2.časť Ďakujem všetkým čo k tejto časti poradili už som to vyriešil.
juriad
Profil
Adam Sipla:
Do databáze to snad zapisuješ nějakým skriptem a tím můžeš vypočítat datum za 30 dnů. Ale možná to potřebuješ na něco jiného než jsem myslel. Jaké interakce s tím záznamem jsou?
Bude jej někdo někdy mazat?
Bude jej někdo někdy upravovat?
Bude někdo někdy posouvat ten čas automatické změny?
Adam Sipla
Profil
juriad:
Bude to používané na systém platieb. Napríklad: zaplatí si na mesiac, zmení to hodnotu užívateľa na áno a po tých 30 alebo 60 ktoré si zaplatil sa to zase zmení na nie... Nie nebude to nikdy nikto meniť bude to statické, automatické
mimochodec
Profil
Adam Sipla:
Takže budeš mít tabulku plateb a u každé z nich čas zaplacení a zaplacený interval. Cron nepotřebuješ. Při přihlášení uživatele i sáhneš do tabulky plateb, sečteš dvě čísla, porovnáš s aktuálním datem a když nebude splněno, zobrazíš mu neplacený obsah.
Adam Sipla
Profil
mimochodec
Dobre ale akým kódom vypočítam kedy presne (stačí dátum) to má skončiť ? (nie som v tom profesionál tak neviem ako na to).
mimochodec
Profil
Adam Sipla:
Třeba takto:
  $currentDate = new DateTime($zdatabaze);
  $currentDate      -> modify('+1 week');
  echo $currentDate -> format('Y-m-d') . ' <br />';

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: