Diese Seite verwendet Cookies, um das bestmögliche Nutzererlebnis sicherzustellen. Wenn Sie die Seite weiter nutzen, stimmen Sie der Cookie-Nutzung zu.  mehr...  Einverstanden  Ablehnen

DEMOSPOOL

Spooldaten in Ringpuffer speichern

Spooldaten sollen in einen Ringpuffer aus max. 9999 Blöcken (mit jeweils max. 20000 Zeichen) gesichert werden. Ist der Ringpuffer voll, werden die ältesten Daten überschrieben. Die ID $id wird fortlaufend von 1 beginnend hochgezählt. Wird die gleiche ID $id mehrmals übertragen (max. 5000 Zeichen je Aufruf), werden die Daten an den bestehenden Puffer angehängt. Ist die ID noch nicht vorhanden, wird sie neu angelegt.


~^<Q776Q([0-9]{1,10});([^>]{1,5000})>$~si
$id, $text
// Beispiel <Q776Q1;AbcdefgHijklmnop>

$lfd = $id % 10000;

XLPAD( $lfd , '0' , 4 )

XDBOPEN( 'demospool' )
if (empty($syserror))
{
  XDBGET( $lfd , &$xid , &$xdattim , &$xbuffer )
  if (empty($syserror))
  {
    XDATE( 'YmdHis' , &$xdattim )
    if ($id == $xid)
    {
      $xbuffer .= $text;
    }
    else
    {
      $xbuffer = $text;
    }

    XDBPUT( $lfd , $id , $xdattim , $xbuffer )
    if (empty($syserror))
    {
      $cmd = "<Q997QOK>";
    }
    else
    {
      $cmd = "<Q997QERROR>";
    }
  }
  else
  {
    $cmd = "<Q997QERROR>";
  }
}
else
{
  $cmd = "<Q997QERROR>";
}

$sysreply = $cmd;


XDATE
XDBGET
XDBOPEN
XDBPUT
XLPAD
$syserror
$sysreply