Visualizzazione risultati 1 fino 8 di 8
Like Tree1Likes
  • 1 Post By darbula

Discussione: Controlla che il file esista e non sia vuoto

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito Controlla che il file esista e non sia vuoto

    Salve a tutti

    nel codice e' presente if(file_exists che controlla se esiste nella cartella, ma stranamente e' successo che il file scaricato e' presente ma le dimensioni sono 0

    come gestisco questa situazione?






    Codice PHP:

    <?php

    $basenameimages
    = basename($namedb.' '.$actorimdbid.'.'.$ext); // 5518-2x.jpg


    if(file_exists($pathimages.$basenameimages)) {

    $photo_msg1 .= '<span class="badge badge-success">photo exists in IMDB</span>';


    } elseif (empty(
    $row->imdbid)) {

    echo
    '<img src="https://forum.it.altervista.org/images/close.gif" height="16" width="16" /> <b style="color:blue;">Imdbid</b> <b style="color:red;">non e presente, aggiornare (per vedere le foto, se presenti)</b>';


    } elseif (empty(
    $image2)) {

    $photo_msg3 .= '<span class="badge badge-danger">photo non exists in IMDB</span>';

    }else{


    file_put_contents($pathimages.$basenameimages,file_get_contents($image2, false));

    ?>

  2. #2
    frasidipace non è connesso AlterGuru
    Data registrazione
    07-05-2010
    Messaggi
    2,368

    Predefinito

    Salve,
    può utilizzare filesize() per controllare le dimensioni del file.

    Saluti

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da frasidipace Visualizza messaggio
    Salve,
    può utilizzare filesize() per controllare le dimensioni del file.

    Saluti


    caso 1: file_put_contents scarica i file e potrebbe capitare che qualche file sia vuoto (nel server pero' e' presente)
    il motivo di questa anomalia la devo ancora scoprire

    caso 2: il file e' scaricato e rieseguo il download, e il codice come lo strutturo?

  4. #4
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,007

    Predefinito

    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    caso 1: file_put_contents scarica i file e potrebbe capitare che qualche file sia vuoto (nel server pero' e' presente)
    il motivo di questa anomalia la devo ancora scoprire
    Salve,
    solitamente file_put_contents() crea un file vuoto nel caso in cui il valore del secondo paramentro e nullo.

    Penso che sia meglio eseguire un controllo in questo modo:
    Codice PHP:
    <?php
    if(($checkfile = file_get_contents($image2, false)) !== false){

    file_put_contents($pathimages.$basenameimages, $checkfile);
    $photo_msg1 .= '<span class="badge badge-success">photo exists in IMDB</span>';
    }
    else{

    $photo_msg3 .= '<span class="badge badge-danger">photo non exists in IMDB</span>';
    }
    ?>
    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    caso 2: il file e' scaricato e rieseguo il download, e il codice come lo strutturo?
    Non mi è ben chiaro in cosa ci sia difficoltà. Magari se metti una bozza di codice come esempio di ciò che vuoi ottenere, magari renderebbe meglio l'idea.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 20-12-2022 alle ore 20.14.22

  5. #5
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Copia e incolla il risultato di questa funzione php
    Codice PHP:
    <?php

    echo sys_get_temp_dir();

    ?>
    per conoscere il percorso temporaneo completo, crea un file errori.txt su di esso
    pagina1.php
    Codice PHP:
    <?php

    $uint256_t
    = '115792089237316195423570985008687907853269984665640564039457584007913129639935';
    $uint256_t = (int) $uint256_t;
    error_reporting($uint256_t);
    ini_set('display_startup_errors', '1');
    ini_set('display_errors', '1');
    ini_set('log_errors', 'On');
    ini_set('error_log', sys_get_temp_dir() . '/errori.txt');

    ?>
    Inserisci tra tag php pagina1.php alla prima riga della tua seconda pagina
    Codice PHP:
    <?php
    include '/percorso/completo/pagina1.php';
    echo
    'pagina 2, tutto il resto che fa il mio programma';

    ?>
    il valore /percorso/completo/ quando sei su pagina1.php devi recuperarlo
    Codice PHP:
    <?php

    echo dirname(__FILE__);

    ?>
    Ho il dubbio che file_get_contents genera Warnings ma il tuo ambiente non è configurato per la visualizzazione, sebbene l'output probabilmente è già su file e basta cercare con Google percorso errori php versione sistema operativo. (Semplicemente per modalità di sviluppo o produzione non è consigliato l'output su schermo ma ovviamente deve almeno esistere output su file)
    Probabilmente il Warnings ti dice che non trova il percorso perché lo vuole completo.
    Ultima modifica di darbula : 20-12-2022 alle ore 22.54.19

  6. #6
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    ciao darbula, ciao a tutti (grazie per il vostro aiuto)

    scusate ma il codice sopra non e' quello del problema,mi sono confuso (l'eta' avanza ) quello corretto e questo


    Codice PHP:

    $a
    = $row->imdbid;

    $name = $row->name;

    ............................
    codice parziale



    $dirname
    = 'images_actors/';
    if (!
    is_dir($dir = $name.' - ' .$a)) mkdir($dirname.$name.' - '.$a);

    $folder = $dirname.$dir.'/'.$a;
    //}
    for ($i=0;$i<count($str[1]);$i++) {
    //echo "\rScaricamento in corso... [Pagina#".
    ($z+1)."/".$pages." - Foto#".(++$u)."/".$pagesnum[1]."]";
    if (!
    file_exists($folder.'_'.$u.'_'.'.jpg'))
    file_put_contents($folder.'_'.$u.'_'.'.jpg', get('https://m.media-amazon.com/images/M/'.$str[1][$i].$str[2][$i].'jpg'));

    penso che il problema risieda qui

    Codice PHP:
    if (!is_dir($dir = $name.' - ' .$a)) mkdir($dirname.$name.' - '.$a);
    il codice scarica tutte le foto da imdb associate a un attore o film (codice diverso) prendendo come riferimento il codice imdbid, a scaglioni di 48 per pagina, in effetti alla fine della prima pagina se presente un'altra visualizzo un warning di creazione cartella che cerca di creare la cartella ma dice che e' presente



    NOTA: la creazione di qualche immagine vuota non succede sempre, il 99,9% scarica tutto normalmente, ma come ho scritto e' successo che qualche foto era vuota, mistero
    Ultima modifica di blackskyisback : 21-12-2022 alle ore 09.28.54

  7. #7
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Il problema può essere prima, se crei il file errori.txt nel percorso sys_get_temp_dir() e poi dove esegui il codice (mkdir) chiamiamolo pagina2.php la prima riga è con include /percorso/completo/pagina1.php che così avrai la registrazione degli errori anche in pagina2.php.
    Quindi pagina1.php può essere applicata manualmente e singolarmente per ogni pagina per visualizzare se sono assenti errori di ogni tipo (incluso Warnings o Notice).
    Quindi dentro la funzione is_dir puoi solo valutare $dirname (secondo la mia interpretazione che è un percorso quasi completo ma non del tutto, il percorso completo è se pagina2.php echo dirname(__FILE__) che sarà qualcosa come /home/user/pagina2.php).
    Codice PHP:
    $dirname = 'images_actors/';
    $dir = $name.' - ' .$a);
    if (!
    is_dir($dirname . $dir)) mkdir($dirname . $dir);
    Per evitare ambiguità ti occorre il percorso completo altrimenti file.jpg può essere recuperato da altre cartelle del tuo sistema ma non è ciò che vuoi (che ti da esistente mentre non è file.jpg che intendi tu).
    Tutto il tempo per elaborare questo codice https://forum.it.altervista.org/php-...ml#post1484389 sarà poi successivamente sempre utile.
    Una volta capito il percorso completo sarai capace di capire che se quel file vuoto esiste in quella directory che combacia al percorso completo è da eliminare poiché è errore di qualche tipo.
    Ultima modifica di darbula : 21-12-2022 alle ore 14.42.12
    blackskyisback likes this.

  8. #8
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    ok, provero' a inplementare il tuo codice e ti faccio sapere

    grazie darbula

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •