Hvorfor æder mit php script memory?
Hej,Jeg har et problem med at mit PHP script æder vildt meget memory på min apache server.
Jeg har installeret Xampp 5.6.15 med standardindstillinger.
Når jeg kører mit scripts i browseren (holder F5 nede for at siden refreshes en masse gange) kan jeg se i Windows Task Manager at memory forbruget for processen "Apache HTTP Server (32 bit)" stiger og stiger fra ca. 13,1MB til den begynder at sløve ned når den når omkring 140MB, men den stiger stadig.
En kunde der har kørt med scriptet en uges tid, hvor scriptet bliver kørt hvert 5 min ca., havde et forbrug på ovennævnte process i Task Manageren på ca. 450MB. Og det tog ca. 1 min i browseren at køre scriptet..
Det er ikke et særlig avanceret script så forstår ikke hvad der er galt..
Kan i hjælpe?
Scriptet finder og læser en tekst på en hjemmeside hvorefter den laver det om til et RSS-feed.
Scriptet ser sådan her ud:
<?php
//echo memory_get_usage();
//echo "\n";
// ====
// Parse html start
// ====
# Use the Curl extension to query Google and get back a page of results
$url = "http://www.laesoe-line.dk/aktuelsejlads";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
$url = null;
unset($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$timeout = null;
unset($timeout);
$html = curl_exec($ch);
curl_close($ch);
$ch = null;
unset($ch);
# Create a DOM parser object
$dom = new DOMDocument();
# Parse the HTML from Google.
# The @ before the method call suppresses any warnings that
# loadHTML might throw because of invalid HTML in the page.
@$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
//@$dom->loadHTML($html);
$html = null;
unset($html);
$scanHtml = false;
$currentSailing = "Aktuel sejlads: ";
# Iterate over all the <a> tags
foreach($dom->getElementsByTagName('div') as $link) {
# Show the <div id>
if ($link->getAttribute('id') == "MainContent") {
$scanHtml = true;
}
if ($scanHtml) {
if ($link->getAttribute('class') == "Description") {
$currentSailing = $currentSailing . $link->nodeValue . " ";
}
}
if ($link->getAttribute('class') == "Clears") {
$scanHtml = false;
break;
}
}
$link = null;
unset($link);
$dom = null;
unset($dom);
$scanHtml = null;
unset($scanHtml);
// ====
// Parse html end
// ====
// ====
// RSS feed start
// ====
header("Content-Type: application/rss+xml; charset=UTF-8");
$rssfeed = '<?xml version="1.0" encoding="UTF-8"?>';
$rssfeed .= '<rss version="2.0">';
$rssfeed .= '<channel>';
$rssfeed .= '<title>Fra Læsø Aktuel sejlads</title>';
$rssfeed .= '<link></link>';
$rssfeed .= '<description></description>';
$rssfeed .= '<language>da-dk</language>';
$rssfeed .= '<copyright></copyright>';
/** Get current info **/
$rssfeed .= '<item>';
$rssfeed .= '<title>' . $currentSailing . '</title>';
$currentSailing = null;
unset($currentSailing);
$rssfeed .= '</item>';
$rssfeed .= '</channel>';
$rssfeed .= '</rss>';
echo $rssfeed;
$rssfeed = null;
unset($rssfeed);
// ====
// RSS feed end
// ====
//echo "\n";
//echo memory_get_usage();
?>
Venlig hilsen Birk