Mam problem s vyhledavanim souboru csv. Na localhost to funguje ok ,ale na webzdarma mi while projede 8x a soubor nenajde.$existuje je stale 0.
Setkal se s tim nekdo? cim to? Snad neni chyba mezi zidli a klavesnici :-)
$existuje = 0;
$cyklus = 0;
while (($cyklus <8) && ($existuje <> 1))
{
$date0 = Date("ymd",MkTime(0,0,0,Date("m"),Date("d")-$cyklus,Date("y")));
$filename='ftp://ftp.pse.cz/Results.ak/AK'.$date0.'.csv';
if (@file_exists($filename))
{
$existuje = 1;
}
$cyklus++;
echo $cyklus.' '.$date0.'<br>';
}
if ($existuje == 1)
{
echo $cyklus.' - '.$date0.'<br>';
}
else
{
echo 'soubor neexistuje';
}
$filename='ftp://ftp.pse.cz/Results.ak/AK'.$date0.'.csv';
z manuálu:
file_exists() nefunguje na vzdálených souborech; soubor k ověření musí být přístupný prostřednictvím filesystému serveru
a neslo by to resit nejak jinak? Snad nekdo neco podobnyho na WZ taky potrebuje pouzivat.
zkus otevřít soubor pomocí fopen a testovat jestli se soubor podařilo otevřít
Tak tak. Tento poslední příspěvek diskuze k funkci file_exists je zobrazený hned nahoře...
Here is an easy function to check for remote files or an existing URL:
<?php
function url_exists($url)
{
$handle = @fopen($url, "r");
if ($handle === false)
return false;
fclose($handle);
return true;
}
?>
tak tohle taky funguje jen na localu - na webzdarma taky ne.
<?php
function url_exists($url)
{
$handle = @fopen($url, "r");
if ($handle === false)
return false;
fclose($handle);
return true;
}
?>
k tomu fopen viz vyse, potrebuji otestovat existenci souboru, protoze v pripade ze soubor neexistuje tak while (!feof ($f)) jede donekonecna az mi to schodi explorera.
sakra proc to na serveru nemaj funkcni.
Mne ta funkce funguje i na wz.
tak jsem si udelal zkusebni php soubor find.php
<?
function url_exists($url)
{
$handle = @fopen($url, "r");
if ($handle === false)
return false;
fclose($handle);
return true;
}
if (!isset($_COOKIE["spad"])){
$existuje = 0;
$cyklus = 0;
while (($cyklus < 4) && ($existuje <> 1))
{
$date0 = Date("ymd",MkTime(0,0,0,Date("m"),Date("d")-$cyklus,Date("y")));
$date00 = Date("Y-m-d",MkTime(0,0,0,Date("m"),Date("d")-$cyklus,Date("y")));
$filename='ftp://ftp.pse.cz/Results.ak/AK'.$date0.'.csv';
if (@url_exists($filename)=='true')
{
$existuje = 1;
}
$cyklus++;
//echo $cyklus.' '.$date0.$filename.'<br>';
}
//echo 'test';
if ($existuje == 1)
{echo $cyklus.' - '.$date00.'<br>';}
else
{echo 'soubor neexistuje';}
}
?>
Na locale mi to echo vypise spravne koli smycek while a datum nalezeneho souboru. Na webzdarma - soubor neexistuje. Fakt nevim
odkaz zde
http://rahan.wz.cz/find.php
no fuj, co je tohle za odpornost?
if (@url_exists($filename)=='true')
{
$existuje = 1;
}
co takhle
$existuje = url_exists($filename);
njn ucim se ! odpornosti mam ve scriptu povicero.
zkusil jsem $existuje = url_exists($filename);
a na localhost ok , na WZ soubor neexistuje
tudy cesta taky nevede .Ale dik za kazdy napad,radu. :-)
http://rahan.wz.cz/find.php
AAou. Vypada to, ze na WZ to nepujde.
Warning: fopen(ftp://ftp.pse.cz/Results.ak/AK060915.csv): failed to open stream: FTP server reports 220 Check Point FireWall-1 Secure FTP server running on fw
a vygeneruje ti to na wz spravny $filename?
http://tom.czweb.org/find.php
jj uz to taky vidim, ze ja tam ty zavinace pred fopen davam.
http://rahan.wz.cz/find.php
a ted uz kord nevim co s tim budu delat !
asi to budu muset provozovat na localhost. Ach jo...
To vypada skoro jako ze wz blokuje FTP spojeni ven, ne? No, to by bylo vicemene logicke, server v zasade nema co sam navazovat spojeni s okolim pres ftp...
Jeste je jedna moznost. Proc pouzivat fopen, ci neco podobneho k pristupu k FTP, kdyz je k tomu urcena skupina funkci ftp_xxx()?
http://cz.php.net/manual/cs/ref.ftp.php