21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Jenicek
Profil
jednoduchý kodík na zápis informací

  $datum = date("d.m.Y H:i:s");
  $soubora = fopen("lidi.txt", "r");
  $lidi = fread($soubora, 5000);
  $vsechnylidi = "$datum $infoolidech \r $lidi";
  fclose($soubora);

  $souborb = fopen("lidi.txt", "w");
  fwrite($souborb, $vsechnylidi);
  fclose($souborb);

v cronu pak načítám script z jiného virtuálu (a však na stejném serveru) takto
*/5 * * * * nobody wget http://IP/lidi.php -O /dev/null -o /dev/null


co může způsobit, že v lidi.txt je pak záznam 2x?
nějaké možné příčiny? load average? timeout server? data retrieval?

díky za pomoc


ještě by jsem rád dodal, že duplicitivní zápis je tam nepravidelně... zdvojený zápis není pravidlem :)
Jan Tvrdík
Profil
Jenicek:
Pro začátek bych tam přidal zámky a nahradil \r za \n, tj.

$datum = date("d.m.Y H:i:s");
$soubor = fopen("lidi.txt", "r+");
flock($soubor, LOCK_EX);

$lidi = stream_get_contents($soubor);
$vsechnylidi = "$datum $infoolidech \n $lidi";

fseek($soubor, 0);
fwrite($soubor, $vsechnylidi);
flock($soubor, LOCK_UN);
fclose($soubor);
Jenicek
Profil
to ale zdvojený zápis neovlivní ne?
nemám v logu žádné chyby ani když jsem wget vyvolal rootem
nejak vůbec nemám představu čím by to alespoň čistě teoreticky mohlo být...

díky :)
Keeehi
Profil
Není ten script přístupný z internetu?
Jenicek
Profil
ano ale je to pod .htpasswd a lidi.php načítá pouze cron
v administraci mám odkaz přímo na lidi.txt
em... proč?
Keeehi
Profil
Jenicek:
em... proč?
Právě proto, že by ho mohlo spouštět něco jiného. Ale pokud by tomu tak opravdu bylo, pak bys měl vidět záznam v access logu. Ty z cronu tam nejsou, protože to nejde přes server ale napřímo.
Kajman
Profil
Jenicek:

Pokud wget nedostane v pořádku odpověď, zkusí adresu stáhnout znovu. Tomu se dá zemezit (a ověřit, že to není důvod zdvojení) parametrem
--tries=1

Keeehi:
Access log by opravdu měl poradit více. Ale měly by tam být i požadavky wgetu.
Keeehi
Profil
Kajman:
Máš pravdu, já jsem úplně přehlédl, že to tlačí přes webserver a nevolá PHP přímo. Měl bych pozorněji číst.
Jenicek
Profil
tak to je skutečně tak... wget se volal 2x napsal jsem podmínku tak uvidíme zda to pomůže
zatím tam je jen jeden nový zápis a je JEDEN :D
no jsem zvědav nikdy by m nenapadlo, že wget bude dělat toto zvláště u lokální IP

ps: otevírání v PHP jsem zavrhl už v začátkách v minulosti jsem měl problém u volání cčkových věcí přes php a tak ho dohromady "nemám moc rád" :D raději nerozebírat :)


Kajman:
Pokud wget nedostane v pořádku odpověď, zkusí adresu stáhnout znovu. Tomu se dá zemezit (a ověřit, že to není důvod zdvojení) parametrem
jsem --tries=1 nějak přehlédl určitě také přidám ale podmínku už si tam raději nechám :D

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:

0