Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Richiesta POST HTTP/1.0

    Salve,
    stò creando una funzione per fare delle richieste ad un sito web e ricevere il responso.

    Codice PHP:
    <?php

    function richiesta($host$porta 80$pagina 'index'$dati) {
        global 
    $fp;
        
    $dati 'dati=' $dati;
        
        
    $headers .= "POST http://{$host}:{$porta}/{$pagina}.php HTTP/1.0\r\n";
        
    $headers .= "Host: {$host}\r\n";
        
    $headers .= "Connection: Keep-Alive\r\n";
        
    $headers .= "User-Agent: PHP\r\n";
        
    $headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
        
    $headers .= "Content-Length: " strlen($dati) . "\r\n\r\n";
        
    $headers .= $dati;
            
        
    fputs($fp$headers);
        
    output '';
            
        while (!
    feof($fp)) {
            
    $output .= fgets($fp1024);
        }
        
        return 
    $output;
    }

    ?>
    Fin qui tutto ok. Dopo che però, sempre nello stesso script voglio rieffettuare la richiesta, e come se il sito web ha chiuso la connessione, perchè non ricevo più nulla, nemmeno gli headers. Preannuncio che la connessione fsockopen() (dichiarata esternamnte dalla variabile $fp) non la chiudo.
    La cosa mi pare strana, poichè ho impostato la connessione Keep-Alive, quindi non si dovrebbe chiudere.

    Spero sappiate aiutarmi.
    Grazie in anticipo.

    Carlo
    www.phpbbitalia.net
    www.phpbbitalia.it

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    1. Keep-alive dipende dal server. Molti server ce l'hanno disabilitato, o con un timeout ridotto a 2-3 secondi. Quindi il fatto di impostare il header, dalla tua parte, non ti da nessuna certezza.
    2. Postrebbe essere proprio il keep-alive il tuo problema. In una sessione keep-alive, se la memoria non m'inganna, non puoi inviare dei header dopo aver inviato un post.
    3. Anche se mi sbagliassi al p2., tieni conto che il keepalive sicuramente non ti fara guadagnare niente in termini di velocita/prestazioni, se devi inviare 2-3 post, quindi potresti anche rinunciare, e aprire un socket ogni volta che ti serve.

  3. #3
    Ok, ho deciso di aprire il socket per ogni richiesta.

    Grazie lo stesso.
    www.phpbbitalia.net
    www.phpbbitalia.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.