Ciao ragazzi, per favore avrei bisogno di un aiuto. Io estraggo gli annunci con il seguente script php e poi salvo la pagina in xml come nomefeed.xml. Il problema è che devo estrarre circa 60.000 annunci (probabilmente aumenteranno a 70-80K), ma riesco ad estrarre solo 40.000 annunci inserendo LIMIT 0,40000. Se provo ad estrarre per esempio 45.000 o tutti gli annunci lo script va in time out. Premetto che ho un VPS (su Siteground) ed ho impostato il tempo di esecuzione script php a 3000, inoltre nel file .htaccess Sitegroup ha inserito il codice che riporto in basso. Lo script va in time out molto ma molto prima di 3000 secondi. Il sito è basato su Wordpress... Cosa dovrei fare? Come posso ottimizzare lo script?
Grazie infinite!
Grazie infinite!
Codice:
<IfModule mod_dtimeout.c>
<Files ~ ".php">
SetEnvIf Request_URI "*.php" DynamicTimeout=3000
</Files>
</IfModule>[CODE]
Lo script PHP è il seguente:
[PHP]<?
set_time_limit(0);
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "";
$DBuser = "";
$DBpass = "";
$DBName = "";
/* specifichiamo il nome della nostra tabella */
$table = "wp_awpcp_ads";
/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database");
mysql_query("SET CHARACTER SET utf8");
/* impostiamo la query in base alle esigenze di ricerca, WHERE disabled='0', LIMIT 0,40000 - */
$sqlquery = "SELECT * FROM $table ORDER BY ad_id DESC";
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
$i = 0;
if ($number < 1) {
print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
}else{
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<jobs>\n";
while ($number > $i) {
$id = mysql_result($result,$i,'ad_id');
$title = stripslashes(mysql_result($result,$i,'ad_title'));
$country = mysql_result($result,$i,'ad_country');
$state = stripslashes(mysql_result($result,$i,'ad_state'));
$city = stripslashes(mysql_result($result,$i,'ad_city'));
$company = stripslashes(mysql_result($result,$i,'ad_contact_name'));
$description = stripslashes(mysql_result($result,$i,'ad_details'));
$postdate = date('m/d/Y', strtotime(mysql_result($result,$i,'ad_postdate')));
$enddate = date('m/d/Y', strtotime(mysql_result($result,$i,'ad_enddate')));
$description = str_replace('>', '', strip_tags($description));
print "<job>
<id><![CDATA[ $id ]]></id>
<link><![CDATA[ http://www.miosito.com/?id=$id ]]></link>
<name><![CDATA[ $title ]]></name>
<region><![CDATA[ $country, $state, $city ]]></region>
<company><![CDATA[ $company ]]></company>
<description><![CDATA[ $description ]]></description>
<expire><![CDATA[ $enddate ]]></expire>
<updated><![CDATA[ $postdate ]]></updated>
</job>\n";
$i++;
}
}
echo "</jobs>";
// libero la memoria di PHP occupata dai record estratti con la SELECT
mysql_free_result($result);
// chiudo la connessione a MySQL
mysql_close();
?>[/PHP]