Avatar
doMík
Člen
Avatar
doMík:

Snad nevadí, že to sloučím do jednoho dotazu, nechci zakládat nové vlákna pro všechny :)

  1. při pokusu o použití funkce ftp_ssl_connect() mi php hlásí chybu, že funkce neexistuje. přitom v oficiální dokumentaci je tato funkce uvedena.

2)při uploadu na ftp server funkcí ftp_put() v případě že se nejdená o textoví soubor (.txt, .php, .html, apod.), ale jiný (.zip, .mp4, .jpg) oběví se ve složce ftp servru sobor se se jménem jaké by měl mít ale má vždy velikost pouze 1kb nezávisle na velikosti souboru který byl nahráván a samozřejmně nejde otevřít.

3)při downloadu ftp_get() je to podobné jak v případě č.2 s tím rozdílem, že soubor se stáhne ve schodné velikosti, ale opět nelze otevřít (.zip - tento soubor není možné otevřít jako archyv, .mp4 - soubor nelze přehrát, .jpg/.png - soubor není možné zobrazit pravděpodobně osahuje chyby)

4)nakonec ještě jedna praktická. je lepší pokud skript obsahuje víc ftp úkonů pro každý znovu přihlásit na ftp server, provést ukon, ukončit spojení, a pro každý takle dokola nebo přihlásit provést všechny ukony a ukončit spojení?

4.1) ještě drobnost je nějaká možnost jak skriptově zamezit vypysování chybové hlášky serveru? něco jako existenci proměné ošetřím isset().
pokud použiju

if(!ftp_get($sp, $ftp_rname, $ftp_lname, FTP_ASCII)) {
  echo("moje chybová hláška bla bla bla");
}

proběhne sice to co chci já, ale php varování o chybě taky vypíše. zakazovat chybové hlášky na serveru nechci (na hostingu ani nemůžu), ale tady bych je potřeboval nějak ukrýt.

Děkuji

 
Odpovědět 20.4.2015 18:47
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na doMík
Filip Šohajek:
  1. Přímo v dokumentaci se píše :
Note: Why this function may not exist

    ftp_ssl_connect() is only available if both the ftp module and the OpenSSL support is built statically into php, this means that on Windows this function will be undefined in the official PHP builds. To make this function available on Windows you must compile your own PHP binaries.
  1. Zkus použít binární transport místo ASCII (pokud používáš binární, tak nevím)
  2. Samé jak 2
  3. Přihlásit, provést úkony, odhlásiy

4.1) Zkus před funkci přidat @ :

if(!@ftp_get($sp, $ftp_rname, $ftp_lname, FTP_ASCII)) {
   echo("moje chybová hláška bla bla bla");
 }
 
Nahoru Odpovědět  +2 20.4.2015 18:51
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

1 - oficiální info z http://php.net/…-connect.php": ftp_ssl_connect() is only available if both the ftp module and the OpenSSL support is built statically into php, this means that on Windows this function will be undefined in the official PHP builds. To make this function available on Windows you must compile your own PHP binaries.

2 - nejsou nastaveny nějaké limity pro max velikost souboru?

4 - Rozhodně použít jedno spojení.

5 - Vypnout varování, která by měli být na produkčním serveru rozhodně vypnuta a ukládat by se měla někam do logu.

Nahoru Odpovědět 20.4.2015 18:56
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
doMík
Člen
Avatar
doMík:

1)server na kterém sem ftp_ssl_connect() zkoušel by podporu ftp ssl měl mít.. ale dobře bod č.1 můžem považovat za vyřešený.

2,3)změna na binární mód problém vyřešila. velikost souboru je "neomezená" a přes běžné ftp klienty s tím také problém nebyl

4)myslel sem si to, ale trochu se mi to nehodí do skriptu tak sem se chtěl ještě radši ujistit. děkuji

4.1)děkuji vypadá to, že @ pomohl.

5)až bude nějaká stebilnější verze, ve stádiu vívoje přímí výstup hlášek značně pomáhá (obzvlášť pokud nepoužívate editor který zná sintaxi)

  1. ještě dotaz pokud je mezi php a ftp serverem pomalé spojení a pokd by přenos trval např. nekolik desítek minut nebyl by přerušen před dokončením přenosu? pro prohlížeč je to rozhodně dlouho to sem si říkal že by bylo asi nejlepší řešit přes ajax. a k tomu ještě má php někde něco z čeho by šlo odečíst průběh přenosu a nebo bych musel např. porovnávat velikost místního a vzdáleného souboru?
 
Nahoru Odpovědět 20.4.2015 21:17
Avatar
mkub
Redaktor
Avatar
Odpovídá na doMík
mkub:

problem 2,3 moze byt teoreticky aj v limitoch nahravania suborov na server... skus si overit velkost limitu,pripadne,ak sa ti da, tak ich treba spravne nastavit,
4 - zvlast by som sa na kazdu akciu v danom sktipte, resp.v danom projekte neprihlasoval a neodhlasoval, lebo prihlasovanie/od­hlasovanie sposobuje zbytocnu zataz na cely ten system a dochadza potom k latenciam a cim viac uzivatelov bude takto pristupovat k FTP, tym castejsie moze natat, ze bude dochadzat k zaplneniu FTP prihlasovacimi/od­hlasovacimi poziadavkami
cize je lepsie v skripte:

  • prihlasit sa
  • spravit akciu 1
  • spravit akciu 2

.
.
.

  • spravit akciu n
  • odhlasit sa

5. snazit sa pisat kod, aby sa nemuseli potlacovat vypisy chyb pomocou @ a pouzivat @ len vo vynimocnych pripadoch, v tomto pripade by sa mohlo zist zachytavanie vynimiek

 
Nahoru Odpovědět 23.4.2015 2:40
Avatar
doMík
Člen
Avatar
Odpovídá na mkub
doMík:

2,3) při testech na serverech co mám rozmístěné v lokální síti (převážně ve svém pokoji) mám limity nastavené oprvdu na neomezené, jediné co občas omezuju je přenosová rychloat (simulace pomalého připojení)

  1. je nějaká možnost, jak ověřit, že se FTP spojení během provádění nějaké skupiny akcí nepřerušilo (nějak jinak než že nějaká z operací vyhlásí chybu)? && je možné předávat připojení mezi skrypty? (takoví opačný extrém, že by se připojení navázalo při přihlášení do web. rozhraní soubor manageru a přerušilo se až při odhlášení)
 
Nahoru Odpovědět 27.4.2015 19:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.