Hallo,
nach langem Suchen mit Try&Error hab ich es endlich geschafft, das Script allen Übels zu ermitteln.
Hintergrund waren tägliche Abstürze vom Apache mit der einzigen Fehlermeldung im Error.log:
Parent: child process exited with status 3221225477 -- Restarting.
Weder im Ereignislog noch sonstwo ein Hinweis auf ein Script oder sonstwas.
Lange Rede kurzer Sinn, ich hab das Script nun lokalisieren können, weiß aber nicht, ob und wo ich am Script etwas ändern könnte, damit der Apache nicht abraucht.
Der Apache 2.2.4 läuft auf nem Win2000 mit Disabled use of AcceptEx() WinSock2 API. PHP Version ist 5.2.1
Das Script wird alle 60 Sekunden aufgerufen, aber wenn's nur alle 5 Minuten aufgerufen würde, könnte ich auch mit leben.
Ich weiß nicht, ob es ein PHP-Bug ist, der Speicher nicht richtig freigibt, oder ein Problem mit der COM-Schnittstelle. Vielleicht ist es auch ein Notes-Problem?
Macht natürlich Sinn, wenn ich das Script mal hier poste...:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>SpamSentinel Statistik</title>
<?
echo "<meta http-equiv="refresh" content="60; URL=spamstat.php">";
?>
<style type="text/css">
td {font-size:14pt;}
td.werte {color:yellow;font-size:16pt;}
</style>
</head>
<body>
<?
$session = new COM( "Lotus.NotesSession" );
$session->Initialize('kennwort');
//echo "Current user: " . $session->UserName . "<br><br>\n\n";
$db = $session->getDatabase( "10.1.1.1", "SpamSentinel\SpamSentinelAdmin.nsf", false );
if (!$db) {
echo "Konnte Datenbank nicht öffnen!!!<br>";
exit;
}
$view = $db->getView( "Spam Statistics" );
$entry = $view->GetFirstDocument();
$aktdatum = date("d.m.Y");
$aktjahr = date("Y");
$aktmonat = date("m");
$nmonat = $aktmonat * 1;
$amonat = array("Dummy","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
$textmonat = $amonat[$nmonat];
$j_inbound = 0;
$j_blocked = 0;
$j_prozent = 0;
$m_inbound = 0;
$m_blocked = 0;
$m_prozent = 0;
$d_inbound = 0;
$d_blocked = 0;
$d_prozent = 0;
while (is_object($entry)) {
$field = $entry->GetFirstItem( "LogDate" );
$created = $field->text;
$datum = substr($created,0,10);
$jahr = substr($created,6,4);
$monat = substr($created,3,2);
if ($jahr == $aktjahr) {
$field = $entry->GetFirstItem( "InboundMessages" );
$allemails = $field->text;
$field = $entry->GetFirstItem( "BlockedSpamCop" );
$feld1 = $field->text;
$field = $entry->GetFirstItem( "BlockedSpamnet" );
$feld2 = $field->text;
$field = $entry->GetFirstItem( "BlockedDomains" );
$feld3 = $field->text;
$field = $entry->GetFirstItem( "BlockedWords" );
$feld4 = $field->text;
$field = $entry->GetFirstItem( "BlockedSubjects" );
$feld5 = $field->text;
$field = $entry->GetFirstItem( "BlockedRecipients" );
$feld6 = $field->text;
$field = $entry->GetFirstItem( "BlockedInvalidRecipients" );
$feld7 = $field->text;
$geblockt = $feld1+$feld2+$feld3+$feld4+$feld5+$feld6+$feld7;
$j_inbound += $allemails;
$j_blocked += $geblockt;
if ($monat == $aktmonat) {
$m_inbound += $allemails;
$m_blocked += $geblockt;
}
if ($datum == $aktdatum) {
$d_inbound = $allemails;
$d_blocked = $geblockt;
}
}
$entry = $view->getNextDocument($entry);
}
$session = null;
unset($session);
if ($d_inbound > 0) {
$d_prozent = round($d_blocked * 100 / $d_inbound, 2);
}
if ($m_inbound > 0) {
$m_prozent = round($m_blocked * 100 / $m_inbound, 2);
}
if ($j_inbound > 0) {
$j_prozent = round($j_blocked * 100 / $j_inbound, 2);
}
$d_inbound = number_format($d_inbound,0,"",".");
$d_blocked = number_format($d_blocked,0,"",".");
$m_inbound = number_format($m_inbound,0,"",".");
$m_blocked = number_format($m_blocked,0,"",".");
$j_inbound = number_format($j_inbound,0,"",".");
$j_blocked = number_format($j_blocked,0,"",".");
?>
<h2 align="center">SpamSentinel Statistik</h2>
<p align="center">Zur Zeit deaktiviert</p>
<table border="0" align="center" cellspacing="5" cellspacing="5">
<tr><td></td><td align="right">empfangene Mails</td><td align="right">geblockte Mails</td><td align="right">Anteil in %</td></tr>
<tr><td>Heute</td><td class="werte" align="right"><?=$d_inbound;?></td><td class="werte" align="right"><?=$d_blocked;?></td><td class="werte" align="right"><?=$d_prozent;?>%</td></tr>
<tr><td><?=$textmonat;?></td><td class="werte" align="right"><?=$m_inbound;?></td><td class="werte" align="right"><?=$m_blocked;?></td><td class="werte" align="right"><?=$m_prozent;?>%</td></tr>
<tr><td><?=$aktjahr;?></td><td class="werte" align="right"><?=$j_inbound;?></td><td class="werte" align="right"><?=$j_blocked;?></td><td class="werte" align="right"><?=$j_prozent;?>%</td></tr>
</table>
</body>
</html>