B
Bgag
Guten Abend,
Ich habe ein kleines Problem. Ich muss Daten von einer mit fsockopen() hergestellten Verbindung lesen. Dazu habe ich zwei verschiedene Ansätze. Bisher erziehlte der 1. Ansatz deutlich schnellere und bessere Resultate, trotz der Rekursion und dem Schlafenlegen des Programms. Das kann ich mir überhaupt nicht erklären. Kann mir das jemand erklären und kennt jemand vielleicht noch eine weitere, eventuell sogar bessere Implementation?
Lg, Andreas
Ansatz 1
Ansatz 2
Ich habe ein kleines Problem. Ich muss Daten von einer mit fsockopen() hergestellten Verbindung lesen. Dazu habe ich zwei verschiedene Ansätze. Bisher erziehlte der 1. Ansatz deutlich schnellere und bessere Resultate, trotz der Rekursion und dem Schlafenlegen des Programms. Das kann ich mir überhaupt nicht erklären. Kann mir das jemand erklären und kennt jemand vielleicht noch eine weitere, eventuell sogar bessere Implementation?
Lg, Andreas
Ansatz 1
PHP:
/* read message from socket */
$message = fgets($this->control);
/* check if there were some data */
if( $message == '' )
{
/* check if max depth is reached */
if( $i==30 )
{
return "";
}
else
{
/* wait a moment */
sleep(1);
return $this->getReply($i+1);
}
}
Ansatz 2
PHP:
$go = true;
$message = "";
do
{
$tmp = @fgets($this->control, 512);
if($tmp === false)
{
$go = false;
}
else
{
$message .= $tmp;
if( preg_match('/^([0-9]{3})(-(.*[\r\n]{1,2})+\\1)? [^\r\n]+[\r\n]{1,2}$/', $message) ) $go = false;
}
} while($go);
Zuletzt bearbeitet von einem Moderator: