Ciao a tutti, ho un problema di cui si è ampliamente discusso in termini teorici e "politici" ma che nella pratica non riesco a dipanare.
Allora ho 2 pagine (1 asp ed una php) che fanno in pratica la stessa cosa: lettura di un db Mysql limitato a due record e 3 campi per record, siamo su server Windows.
In linea teorica php dovrebbe essere più rapido in quanto per l'ASP utilizzo i driver ODBC mentre quello che avviene è che la pagina php impiega diversi secondi a terminare l'elaborazione mentre la ASP è istantanea.
Spero di aver sbagliato nel codice php ma credo possa dipendere qualche impostazione sul server. Vi allego il codice delle due pagine nella speranza che qualcuno mi dipani questa incongruenza in quanto non vorrei davvero dover rifare tutto il sito in asp perchè il php è più lento.
Grazie a tutti:
PAGINA PHP:
<?
define('maxris_ricerca', 2);
$inizio = 0;
$parametro = strtolower($_GET["term"]);
if (!$parametro) return;
$campi = "visto_c_no as id,titolo as label,visto_c_no as value";
$strWhere = " (titolo like '%$parametro%') ";
$plink=mysql_connect('localhost','videoelite','200 3vide') or die("Impossibile connettersi al database");
mysql_select_db('videoelite') or die ("Impossibile selezionare il database");
$strQuery = "select $campi from mvs where $strWhere LIMIT $inizio,".maxris_ricerca;
$sql = mysql_query($strQuery) or die (mysql_error());
while($dati = mysql_fetch_object($sql)){
echo "id=".$dati->id."&value=".$dati->value."&label=".$dati->label."
";
}
mysql_close();
?>
PAGINA ASP
<% @language=VBScript %>
<% Option Explicit %>
<% 'On Error Resume Next %>
<% Response.expires = -1500%>
<% 'Response.Buffer = True %>
<%
Dim Conn
Dim RS
Dim strQuery
Dim maxRisultati
Dim inizio
Dim parametro
Dim campi
Dim strWhere
Dim i
maxRisultati = 2
inizio = 0
parametro = request.QueryString("term")
campi = "visto_c_no as id,titolo as label,visto_c_no as value"
strWhere = " (titolo like '%" & parametro & "%') "
Set Conn = Server.CreateObject("ADODB.Connection")
'response.Write(server.MapPath("DbReadOpen.asp"))
Conn.ConnectionString = _
"DRIVER={MySQL ODBC 3.51 Driver};PORT=3306;db=videoelite" & _
";SERVER=localhost" & _
";UID=videoelite" & _
";PWD=2003vide"
Conn.open
set Rs = Server.CreateObject("ADODB.Recordset")
strQuery = "select " & campi & " from mvs where " & strWhere & " LIMIT " & inizio & "," & maxrisultati
'echo "id=".$dati->id."&value=".$dati->value."&label=".$dati->label."
";
RS.Open strQuery,Conn,3,&H0002
i = 0
if not RS.EOF then
Do while (NOT RS.EOF)
response.Write("&id=" & RS("id") & "&value=" & RS("value") & "&label=" & RS("label"))
i = i + 1
RS.Movenext
Loop
end if
rs.close
set rs = nothing
conn.close
Set conn= nothing
%>
Saluti
Fabio