Subject | Using events |
---|---|
Author | Daniel Miller |
Post date | 2015-08-25T20:22:07Z |
I have the following trigger:
CREATE TRIGGER TRIG_RAW_IPLINK_EVENT FOR RAW_IPLINK ACTIVE
AFTER INSERT OR UPDATE POSITION 1
AS
DECLARE VARIABLE iplink char(4);
DECLARE VARIABLE received varchar(40);
DECLARE VARIABLE eventstring varchar(44);
BEGIN
iplink = cast(new.IPLINK as char(4));
eventstring = 'RAW:' || iplink;
post_event eventstring;
END^
So, what I THINK happens - is on any insert or update (and on this table
it's only inserts) I should be generating events named RAW:1116, or
whatever iplink happens to be. new.iplink is a smallint that is always
4 digits.
Assuming I've got that part right - over in php land I have the
following. Obviously I'm doing something wrong - I just have no clue
what yet. The output of the below gives me my two sanity checks - but
nothing from the loop.
$iplink_node = 1116;
$dbh = ibase_connect( 'test.fdb', 'SYSDBA', 'masterkey', 'ASCII' );
echo "Database handler $dbh\n";
$evs = "RAW:$iplink_node";
echo "Event is $evs\n";
while ( $handler = ibase_wait_event( $dbh, "raw_line_handler" ) ) {
// just keep looping...just keep looping...
echo "$handler looped\n";
flush();
sleep(1);
}
function raw_line_handler( $event_name, $dbh ) {
$iplink_node = substr( $event_name, 4, 4 );
echo "iplink is $iplink_node\n";
$qs = "select first RAWLINE from RAW_IPLINK where IPLINK=? order by
RECEIVED desc";
$qh = ibase_query( $dbh, $qs, $iplink_node );
if ( $qh ) {
while ( $row = ibase_fetch_row( $qh ) ) {
echo $row[0];
}
}
return true;
}
--
Daniel
CREATE TRIGGER TRIG_RAW_IPLINK_EVENT FOR RAW_IPLINK ACTIVE
AFTER INSERT OR UPDATE POSITION 1
AS
DECLARE VARIABLE iplink char(4);
DECLARE VARIABLE received varchar(40);
DECLARE VARIABLE eventstring varchar(44);
BEGIN
iplink = cast(new.IPLINK as char(4));
eventstring = 'RAW:' || iplink;
post_event eventstring;
END^
So, what I THINK happens - is on any insert or update (and on this table
it's only inserts) I should be generating events named RAW:1116, or
whatever iplink happens to be. new.iplink is a smallint that is always
4 digits.
Assuming I've got that part right - over in php land I have the
following. Obviously I'm doing something wrong - I just have no clue
what yet. The output of the below gives me my two sanity checks - but
nothing from the loop.
$iplink_node = 1116;
$dbh = ibase_connect( 'test.fdb', 'SYSDBA', 'masterkey', 'ASCII' );
echo "Database handler $dbh\n";
$evs = "RAW:$iplink_node";
echo "Event is $evs\n";
while ( $handler = ibase_wait_event( $dbh, "raw_line_handler" ) ) {
// just keep looping...just keep looping...
echo "$handler looped\n";
flush();
sleep(1);
}
function raw_line_handler( $event_name, $dbh ) {
$iplink_node = substr( $event_name, 4, 4 );
echo "iplink is $iplink_node\n";
$qs = "select first RAWLINE from RAW_IPLINK where IPLINK=? order by
RECEIVED desc";
$qh = ibase_query( $dbh, $qs, $iplink_node );
if ( $qh ) {
while ( $row = ibase_fetch_row( $qh ) ) {
echo $row[0];
}
}
return true;
}
--
Daniel