Pagina 1 di 1

[PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 13:17
da teox99
ciao ho creato un motore di ricerca dei paccehtti slackware con php

http://www.teoxonline.com/utils/sse/

usando le curl apro il file ...repo/FILELISTS.TXT (circa 2mb)
per la gran parte dei repo / mirrors ecc... il processo è pressocchè immediato,
solo per repository.slacky.eu è sensibilmente più lento degli altri, dato che ho sviluppato questo tool più che altro per slacky.eu...
la cosa mi fà al quanto stranire...

qualche idea?

Re: [PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 13:21
da conraid
teox99 ha scritto:ciao ho creato un motore di ricerca dei paccehtti slackware con php

http://www.teoxonline.com/utils/sse/

usando le curl apro il file ...repo/FILELISTS.TXT (circa 2mb)
per la gran parte dei repo / mirrors ecc... il processo è pressocchè immediato,
solo per repository.slacky.eu è sensibilmente più lento degli altri, dato che ho sviluppato questo tool più che altro per slacky.eu...
la cosa mi fà al quanto stranire...

qualche idea?
a parte che mi sembra un procedimento sbagliato prendere ogni volta il file, fallo una volta e tienilo in cache, e magari controlla se è stato modificato
comunque slacky.eu è lento, usa un mirror

Re: [PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 13:24
da teox99
il caching del file è il prox step,
ma con php (curl) non riesco ad a vere la data del file, l'unico modo che ho è quello comunque di aprirlo e prendere la prima riga che riporta la data... quindi non cambierebbe nulla

Re: [PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 13:37
da conraid
teox99 ha scritto:il caching del file è il prox step,
ma con php (curl) non riesco ad a vere la data del file, l'unico modo che ho è quello comunque di aprirlo e prendere la prima riga che riporta la data... quindi non cambierebbe nulla
beh, puoi prenderlo ogni ora, ogni due, tanto viene modificato una volta al giorno solitamente
ma usi curl perché costretto o ti torna meglio?

Re: [PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 13:45
da teox99
sono costretto perche non c'è modo di aprire una pagine web senza incorrere in un permesso negato da parte del server, poi essendo su aruba non posso nè usare bash (wget ecc...) e ne impostare un cron che mi scarichi il file ogni tot...
che ne pensi?

Re: [PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 13:58
da conraid
teox99 ha scritto:sono costretto perche non c'è modo di aprire una pagine web senza incorrere in un permesso negato da parte del server, poi essendo su aruba non posso nè usare bash (wget ecc...) e ne impostare un cron che mi scarichi il file ogni tot...
che ne pensi?
Cioè fopen ti da errore?
perché, ora non ricordo se conviene in termini di download, ma una cosa tipo
$file = fopen("url_del_file", "r" );
e poi usare filemtime() sullo stream potrebbe essere vantaggioso in termini di prestazioni, ma dovresti provare

sul manuale php trovi anche esempi di classi

Codice: Seleziona tutto

<?php

function filemtime_remote($uri)
{
    $uri = parse_url($uri);
    $handle = @fsockopen($uri['host'],80);
    if(!$handle)
        return 0;

    fputs($handle,"GET $uri[path] HTTP/1.1\r\nHost: $uri[host]\r\n\r\n");
    $result = 0;
    while(!feof($handle))
    {
        $line = fgets($handle,1024);
        if(!trim($line))
            break;

        $col = strpos($line,':');
        if($col !== false)
        {
            $header = trim(substr($line,0,$col));
            $value = trim(substr($line,$col+1));
            if(strtolower($header) == 'last-modified')
            {
                $result = strtotime($value);
                break;
            }
        }
    }
    fclose($handle);
    return $result;
}
// echo filemtime_remote('http://www.somesite.com/someimage.jpg');

?>

Codice: Seleziona tutto

<?php

// get remote file last modification date (returns unix timestamp)
function GetRemoteLastModified( $uri )
{
    // default
    $unixtime = 0;
   
    $fp = fopen( $uri, "r" );
    if( !$fp ) {return;}
   
    $MetaData = stream_get_meta_data( $fp );
       
    foreach( $MetaData['wrapper_data'] as $response )
    {
        // case: redirection
        if( substr( strtolower($response), 0, 10 ) == 'location: ' )
        {
            $newUri = substr( $response, 10 );
            fclose( $fp );
            return GetRemoteLastModified( $newUri );
        }
        // case: last-modified
        elseif( substr( strtolower($response), 0, 15 ) == 'last-modified: ' )
        {
            $unixtime = strtotime( substr($response, 15) );
            break;
        }
    }
    fclose( $fp );
    return $unixtime;
}
?>

Re: [PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 15:31
da teox99
grazie x l'aiuto,
usando fsockopen la funzione mi restituisce 0 invece fopen funziona bene, ma le prestazioni in confronto alle curl mi sembrano le stesse, quindi per comodità apro il file con le curl e leggo la data con fopen. a questo punto posso fare una cache per il repo di slacky, unico problema è che non posso mettere un cronjob sul server di aruba... mi inventerò qualcosa.

Re: [PHP] repository.slacky.eu lento

Inviato: lun 11 mag 2009, 15:45
da conraid
teox99 ha scritto:grazie x l'aiuto,
usando fsockopen la funzione mi restituisce 0 invece fopen funziona bene, ma le prestazioni in confronto alle curl mi sembrano le stesse, quindi per comodità apro il file con le curl e leggo la data con fopen. a questo punto posso fare una cache per il repo di slacky, unico problema è che non posso mettere un cronjob sul server di aruba... mi inventerò qualcosa.
Puoi controllare la data del file locale però
Ad ogni accesso di un utente controlli la data, se è ok, cioè se non è passato un tot da tempo da prestabilito usi il file in locale, altrimenti scarichi nuovamente il file.

Re: [PHP] repository.slacky.eu lento

Inviato: mar 12 mag 2009, 10:33
da teox99
ciao conraid,

ho risolto cachando i file che impiegano più di 3 secondi ad essere downloadati, ora il risultato è che i repo di slacky.eu sono i più veloci!
;)