Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przetwarzanie pliku bez pobrania
Forum PHP.pl > Forum > Przedszkole
Josef S.
Witam

Mam plik duuuuży [na razie 5MB a będzie rósł] (xml) który chcę przetworzyć przez skrypt i dodać do bazy mySQL.

Testowałem na kompie w domu napisany skrypt na win/apache - działa, ale w przypadku serwera na któwym to będzie finalnie - muszę najpierw przesłać ten plik... a to trwa i trwa i trwa... i wychodzą timeouty... nie mam wpływu na konfiguracje serwera sad.gif

PYTANIE:
Czy możliwe jest użycie pliku w skrypcie php bez przesyłania pliku na serwer?questionmark.gif


Będę wdzięczny za jakiekolwiek podpowiedzi.

Josef S.
L_Devil
Z tego co wiem, nie.

Możesz natomiast przesłać go przez ftp i wykonać na serwerze...
Josef S.
przy próbie wysylania przez ftp otrzymuje błąd wynikający z przekroczenia czasu dostepu do serwera


[CODE]
<?php

$hostip = gethostbyname($host);
$conn_id = ftp_connect($hostip);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $host for user $ftp_user_name";
die;
} else {
echo "Connected to $host, for user $ftp_user_name<br>";
echo "Host IP is $hostip<br>";
ftp_set_option($conn_id,FTP_TIMEOUT_SEC,360);
ftp_pasv ( $conn_id, true );


// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file<br>";
} else {
echo "There was a problem while uploading $file<br>";
}

// close the connection
ftp_close($conn_id);
}
?>
[CODE]
zwraca info o przekroczonym czasie dostepu rolleyes.gif


nie mam wpływu na konfiguracje serwera

jakies sugestie?questionmark.gif?
dr_bonzo
To jest proste: zeby skrypt przetworzyl plik musi miec go u siebie na dysku serwera, lub musi go pobrac podczas wykonywania.
1. nie masz tego pliku na dysku wiec z tej opcji nie skorzystasz
2. podczas pobierania pliku (ftp czy fopen) zostaje przekroczony limit czasu wykonywania skryptu, tez odpada.

Pomysl nad innym, rozwiazaniem.

Jak czesto musisz ten plik przerabiac na serwerze -- moze wystarczy recznie (przez clienta ftp) przeslac ten plik a potem go przemielic?
Josef S.
niestety baza musi byc aktualizowana codziennie blink.gif :roll2:
staspolo
można przedłużyć limit w php (poszukam jutro)
lub
wykonać to w trybie wsadomy
prześłać na ftp na pomocą jakiegoś batcha wykonywanego za pomocą "harmonogramu"

wyglad pliku wsadowego np: wsad.txt
Cytat
open twoj.serwer.ftp
user twoj_login
pass twoje_haslo
bin
hash
cd /katalog/
mget plik.jpg
bye


następnie wykonać poleceniem ftp.exe -s:wsad.txt


tyle ze plik wsadowy jest 'skomponowany' do pobrania plkiu a nie do wysylania wiec musisz go sobie troche przerobic pomoc dostepna w ftp.exe poprzez komende ?

jak cos wymyslisz daj znac bo to akurat tez mój aktualny temat
moze znajdzisz jakis program "autoftp"
Guest
Możesz spróbować dać set_time_limit i przedłużyć czas wykonywania skryptu albo tak jak Ci podpowiadają ręcznie wgrywać na ftp a zrobić skrypt, który automatycznie go znajdzie, np. po dacie lub nazwie wg szablonu. Jeśli plik jest przesyłany raz dziennie, to nie powinno to być problemem.
ActivePlayer
set_time_limit(0);
fopen albo fsockopen
ja bym to chyba tak zrobil.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.