Vollständige Version anzeigen : Recursive Datei Auflistung FTP


Tiffany Dicks
11.08.2015, 17:46

Moin,

ich hab mal wieder ein Problem, ich weiß nicht was ihr für Infos braucht um mir zu helfen ich gebe was ich kann. Wenn was fehlt einfach fragen.

Also folgendes Problem.

Ich arbeite mit FuelPHP einem Codeigniter Fork (glaub ich).

Ich habe eine Funktion die alle (!) Dateien auf einem FTP Server anzeigt.

Ich hab jetzt einen Controller in meiner App -> hier funktioniert die Auflistung
Ich habe den Code in einen Task (Cronjob?) verschoben: Hier funktioniert die Auflistung nicht. Wieso auch immer.

Die Funktion zur Auflistung:

function ftp_get_recursive_paths($conn, $path, $max_level = 0){
$files = array();
if($max_level < 0) return $files;
if($path !== '/' && $path[strlen($path) - 1] !== '/') $path ;= '/';
$files_list = ;ftp_nlist($conn, $path);

foreach($files_list as $f){
if($f !== ';' && $f !== '.;' && $f !== $path){
if(;ftp_chdir($conn, $f)){
ftp_get_recursive_paths($conn, $f, $max_level-1);
}else{
$files[] = basename($f);
}
}
}

return $files;
}


Controller Aufruf bringt das erwartete Ergebnis:

Der ganze Code der Public Methode des Controllers der funktioniert lautet:

public function action_index()
{

$server = Model_Server::query()->where('id', '=', 3)->get_one();
$connection = ftp_connect($server->host, $server->port, 30);
ftp_login($connection, $server->username, $server->password);

$files = array();

$list = ftp_get_recursive_paths($connection, '/', 1000);
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($list));
foreach($it as $v) {
echo $v, "<br />";
}

Debug::dump(ftp_get_recursive_paths($connection, '/', 1000));
return new Response();

}


/incomming/Movies/Annie;2014;BDRip;AC3;German;XviD-POE/poe-annie-nfo;nfo
/incomming/Movies/Annie;2014;BDRip;AC3;German;XviD-POE/poe-annie-xvid;avi
/incomming/Movies/Annie;2014;BDRip;AC3;German;XviD-POE - Kopie/poe-annie-nfo;nfo
/incomming/Movies/Annie;2014;BDRip;AC3;German;XviD-POE - Kopie/poe-annie-xvid;avi
/incomming/Movies/SpongeBob;Schwammkopf;-;Schwamm;aus;dem;Wasser;2015;WEBHDRip;MD;German;XviD-bEcKs/SpongeBob;S_bEcKs;part1;rar
/incomming/Movies/SpongeBob;Schwammkopf;-;Schwamm;aus;dem;Wasser;2015;WEBHDRip;MD;German;XviD-bEcKs/SpongeBob;S_bEcKs;part2;rar
/incomming/Movies/SpongeBob;Schwammkopf;-;Schwamm;aus;dem;Wasser;2015;WEBHDRip;MD;German;XviD-bEcKs/SpongeBob;S_bEcKs;part3;rar
/incomming/Movies/SpongeBob;Schwammkopf;-;Schwamm;aus;dem;Wasser;2015;WEBHDRip;MD;German;XviD-bEcKs/SpongeBob;S_bEcKs;part4;rar
/incomming/Movies/SpongeBob;Schwammkopf;-;Schwamm;aus;dem;Wasser;2015;WEBHDRip;MD;German;XviD-bEcKs/SpongeBob;S_bEcKs;part5;rar
/incomming/Movies/SpongeBob;Schwammkopf;-;Schwamm;aus;dem;Wasser;2015;WEBHDRip;MD;German;XviD-bEcKs/SpongeBob;S_bEcKs;part6;rar


Wenn ich nun den Task aufrufe geht ein ähnlicher Code nicht mehr.

Der Code lautet:

/**
*
*/
public static function run()
{

while(true)
{

$servers = \Model_Server::query()->where('active', '=', 1)->get();
foreach($servers as $server)
{
\Cli::write($server->host;' loaded');
}
foreach($servers as $server)
{

\Cli::write('connecting ';$server->host;':';$server->port);
$connection = ;ftp_connect($server->host, $server->port, 30);
if(!$connection)
{
\Cli::write('error');
continue;
}

\Cli::write('login try: ';$server->username);
if(!;ftp_login($connection, $server->username, $server->password))
{
\Cli::write('error');
continue;
}

$observers = \Model_Server_Observer::query()->where('server_id', '=', $server->id)->get();
foreach($observers as $observer)
{

\Cli::write('looking for files ; ';$observer->dir);

$list = ftp_get_recursive_paths($connection, $observer->dir, 1000);
$files = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($list));
\Cli::write("<pre>";print_r($list, true);"</pre>");
foreach($files as $file) {
\Cli::write('found file -> ';$file);
}


}

}


}

}


127;0;0;1 loaded
connecting 127;0;0;1:21
login try: Spongebob
looking for files ; /
<pre>Array
(
)
</pre>


zufällig ne idee woran das liegen könnte? :)

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Murdoc
12.08.2015, 22:27

if(;ftp_chdir($conn, $f)){
ftp_get_recursive_paths($conn, $f, $max_level-1);


Du verwirfst das Ergebnis.


Tiffany Dicks
13.08.2015, 22:04

Erklärt glaube ich nicht wieso der Code im Controller funktioniert wie gewünscht im Task / Cronjob aber nicht. Oder doch?

Augen im Kopf haben hilft ungemein. Eben nochmal den Code überflogen und gesehen das es nicht der gleiche ist.

Danke für den Wink mit dem Zaunpfahl ...


Ähnliche Themen zu Recursive Datei Auflistung FTP
  • Auflistung
    Moin moin liebe Raid-Rusher... ich hab mal ne Frage und zwar hatte ich mal vor einiger Zeit ne art Liste gefunden, in der die Auflistungen der Einzelnen..;(kp wie mans nennt) Final Releaser, Warez wurm, Heimkino, Underground King...;etc. standen. weiß einer von euch wo man die Litse findet?..;wü [...]

  • Auflistung
    Original von mZet Ähm habe ein problem,is villeicht was ganz einfaches,aber ich weiß nich mehr wies geht. also ich habe auf meinem eigenen server einen ordner angelegt wo ich neue scripts und so teste und möchte,das wenn ich die url (meinspace~de/test/ ) aufrufe,dann die einzelnen ordner kommen [...]

  • datein recursive mit bestimmten Muster löschen
    moin ich such noch ne möglichkeit wie ich datein die z;b ;r haben unter debian in allen subdirs löschen zulassen [...]

  • [PHP] Recursive list FTP files
    Das ist mein Code: public function is_dir($directory) else } public function recursive_ls($path, $maxdepth = 10, $currentdepth = 0) } return $contents; } Aufruf: public function run() Ergebnis soll sein: Array ( [0] => /dir [1] => /file;txt [2] => /file1;txt [...]



raid-rush.ws | Imprint & Contact pr