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

    HELP per lettura pagine web da php

    Salve ragazzi, spero di riuscire a trovare delle soluzioni valide ad un problema che purtroppo devo risolvere a tutti i costi
    Allora, :
    Con PHP devo leggere delle pagine WEB per vedere se una certa parola è presente nella pagina.
    Sono riuscito a limitare molto la quantità di dati che php deve controllare all'interno della pagina, ad esempio partendo da un certo punto e e finendo ad un altro, tralasciando tutto il resto.
    Questo però sembra non bastare, perchè se dovessi leggere tutte le pagine che mi occorrono allo stesso tempo, lo script (che esegue questa funzione in un ciclo WHILE) si interrompe come se non ce la facesse a leggere tutte le pagine richieste. Questo potrebbe essere un problema di memoria allocata ? Se si come posso risolvere ?
    Vi posto lo script tanto per fare chiarezza:

    include "dbconfig.php";


    function def_stat(){
    $QC=mysql_query("SELECT * FROM staff WHERE privilegi ='2' ORDER BY codice ASC");
    while($RQ=mysql_fetch_array($QC, MYSQL_BOTH)){
    $c=$RQ['codice'];
    $show_skype="";
    if($RQ['skype'] != "" && $RQ['stato'] != "" && $RQ['stato'] != 2 && $RQ['stato'] != 3){
    $show_skype="<a href=\"skype:$RQ[skype]?call\"><img src=\"click_to_call_p.png\">";
    }
    elseif($RQ['skype'] = "" && $RQ['stato'] != ""){
    $show_skype="";
    }
    elseif($RQ['skype'] != "" && $RQ['stato'] = ""){
    $show_skype="";
    }

    switch($RQ["stato"]){
    case "" :
    $stato="<img src=\"offline_s.png\">";
    $statl="<font size=\"2\" color=\"#C0C0C0\">offline</font>";
    $color="#C0C0C0";
    $call=".";
    break;
    case 1 :
    $stato="<img src=\"online_s.png\">";
    $statl="<font size=\"2\" color=\"#9ACD32\">libero</font>";
    $color="#FF24E2";
    //$call="<a href=\"ls$c.php\"><b>Sala d'attesa</b></a>";
    $call=".";
    break;
    case 3 :
    $stato="<img src=\"online_pau_p.png\">";
    $statl="<font size=\"2\" color=\"#DAA520\"><b>in pausa</b></font>";
    $color="#DAA520";
    $call=".";
    break;
    }
    if($RQ['stato'] != ""){
    $addr="http://pbxes.org/ctop$c";
    if(!$page=file_get_contents($addr, false, null, 3400, 10)) die ("non riesco a leggere $c");
    $status = strpos($page, "Busy");
    if(!$status === false){
    $statl = "<font color=\"#DC143C\">occupato</font>";
    $stato = "<img src=\"online_tel_p.png\">";
    $show_skype ="";
    } }
    switch($c){
    case "01" :
    $color="#4169E1";
    break;
    }
    if($c == "01" AND $RQ['stato'] == ""){
    $call = "<font size=\"1\" color=\"#C0C0C0\">chiama num. 24h</font>";
    }
    echo" <tr>
    <td width=\"35%\"><font size=\"3\" color=\"$color\"><b>$RQ[nome]</b> </font></td>
    <td width=\"20%\"><font size=\"2\">$statl</font></td><td width=\"35%\">$stato $call</td><td width=\"20%\">$show_skype</td>
    </tr>";
    fclose($page);

    }
    }
    $curpage = $_SERVER['PHP_SELF'];
    header('Refresh: 5; url=' . $curpage);
    ?>
    <link rel="stylesheet" href="stile.css" type="text/css" />
    <table cellspacing="0" cellpadding="0" border="0" width="100%" align="center">
    <? def_stat(); ?>

    Qualsiasi suggerimento è ben accetto. Non sono un luminare del PHP, infatti sono auto-didatta ma mi arrangicchio, ecco perchè chiedo qui che vedo siete bravissimi.

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    che errore ti restituisce? probabilmente va in timeout

  3. #3
    Quote Originariamente inviata da clasku Visualizza il messaggio
    che errore ti restituisce? probabilmente va in timeout
    Anzitutto GRAZIE per la risposta.
    L'errore è quello riportato da questa query :
    if(!$page=file_get_contents($addr, false, null, 3400, 10)) die ("non riesco a leggere $c");

    Sai penso anche io. O forse troppi dati da leggere tutti assieme.. anche se poi alla fine non sono poi granchè a livello di "peso" se pensiamo che si tratta di leggere qualche k di testo.

    EDIT: Spiego meglio, Nel senso che lo script funziona benissimo per 3/4 interni, dopo comincia a collassare... Ora ho sostituito questa parte:

    $status = strpos($page, "Busy");
    if(!$status === false){
    $statl = "<font color=\"#DC143C\">occupato</font>";
    $stato = "<img src=\"online_tel_p.png\">";
    $show_skype ="";
    } }
    con questa:

    if(preg_match("/Busy/i", $page)){
    $statl = "<font color=\"#DC143C\">occupato</font>";
    $stato = "<img src=\"online_tel_p.png\">";
    $show_skype ="";
    }

    sembra reggere meglio, ma sempre in errore mi va se gli chiedo di leggere 12 interni
    Ultima modifica di StefanoValle; 11-12-2015 a 17:54

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 © 2024 vBulletin Solutions, Inc. All rights reserved.