Jump to content
php.lv forumi

Atšķirības starp browser un komandrindu


ohmygod

Recommended Posts

Vārdu sakot uzrakstīju maziņu skriptiņu, kam būtu jāsavāc visa šā gada valūtas kursi failos.

Tas tā - gribēj paķēmoties un statistiku uztaisīt.

 

<?PHP
$map='val_kursi/';
for($i=1; $i<=11; $i++){
for($y=1; $y<=31; $y++){
if(strlen($i) == 1){$ii='0'.$i;}else {$ii=$i;}
if(strlen($y) == 1){$yy='0'.$y;}else {$yy=$y;}
if(checkdate($ii, $yy, '2005')){
$a=file('http://www.bank.lv/excel/valkurlv.php?vdate=2005'.$ii.$yy);
$fname=$map.'2005'.$ii.$yy.'.txt';
$file=fopen($fname, 'wb');
foreach($a as $cont){
fwrite($file, $cont);
}
fclose($file);
}
}
}
?>

Nevajag aprun't kodu - ka'ds nu ir, tāds ir.

Problēma ir iekš tamo, ka palaižot no pārlūka - viss smuki izpildās. Ja neskaita to, ka max execution time beidzas janvāra vidū... :D (defaultās 30 sek)

 

Palaižot šo pašu no komandrindas ir errori:

Warning: fwrite(): supplied argument is not a valid stream resource in D:\web\~\bank.php on line 12
PHP Warning:  fclose(): supplied argument is not a valid stream resource in D:\w
eb\~\bank.php on line 14

 

Direktorija eksistē.

Kaut kā iepriekš ar šitamo nebij saskāries. Man ir skripts, kas līdzīgā veidā savāc bildes no kāda saita - un strādā. Tur gan failu savākšanas metode ir cita, bet nu enīvei...

 

Tad kur varētu būt problēma?

12 rinda ir šī: fwrite($file, $cont);

Link to comment
Share on other sites

Par visiem 100% esmu pārliecināts! Mape ir!!

iemetu

if(!file_exists($map)){die('NAV');} else die('IR');

uz pārlūka atgriež 'IR', no komandrindas 'NAV'

 

Norādot pilnu ceļu - viss strādā... :/ Bet kamdēļ tā?

 

pašķirstot vecākus kodu atradu, ka esmu no kama ndrindas izmantojis:

Un takš nav pilns ceļš - laidu tāpat, kā tagad...

$name='fot/new/'.$gn.'/'.$gal.'-'.$add.$nr.'.jpg';

un takš strādāju. Tur man bija vajadzīgs, lai skripts stundām var griezties...

Edited by ohmygod
Link to comment
Share on other sites

No komandrindas jānorāda pilnie ceļi,

jo,cik es sapratu, caur brouzeri tiek darbināts serveris(Apache droshvien) un tad jau darbojās servera uzstādījumi ar.

Link to comment
Share on other sites

Nav gan vieglāk. Ja tev tas skripts ir zem n-līmeņiem, bet vajag tajā pašā mapē esošajā folderī kautko rakstīt/lasīt.

Pie tam tā ir arī portablāk - vari skriptu (ar to folderi kopā) pārlikt uz citu direktoju, nemainot ierakstīto pilno ceļu tur.

Link to comment
Share on other sites

ta juus visi kautko murgojat...

 

ja ir n-liimenja folderi vai tad nebuutu vieglaak šitā ?

 

$path=getcwd()."/relative/path/to/dir/or/file";

 

un nav jāraksta viss garais path :)

Nepareizi, jo current direktorija ir tā no kuras tiek palaista komanda vai arī paša executablja un tas īsti nekombinējas ar izpildāmā skripta atrašanās vietu, līdz ar to šāda kombinācija neies cauri..

pilnais PATH tomēr ir drošākais un elementārākais veids.

Link to comment
Share on other sites

Skriptam konfigā jābūt DATADIR, kas šajā situācijā būs DOCUMENT_DIR + '/mape/'

 

Otrs variants, ko es arī dažreiz izmantoju, no _SELF izgriežu ceļu līdz skriptam (gadījums kad vajag panākt lai datadir zem vienas foldera-roota)

 

$DIR = preg_replace( '|/[^/]+$|', '', $_SELF )

pielabojiet, rakstiju steigā

Link to comment
Share on other sites

×
×
  • Create New...