X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fsac-a-push.phh;h=b931340b629509d865c78d620dc58286cd0f7215;hb=9c35bacfc8208c5201dd2db7821921fd23ba3c08;hp=ee30cea80da7b10ca9d91afd989d33a2d265b76b;hpb=e4ecd1ed630a3f833472e2792d844340f67196db;p=brisk.git diff --git a/web/Obj/sac-a-push.phh b/web/Obj/sac-a-push.phh index ee30cea..b931340 100644 --- a/web/Obj/sac-a-push.phh +++ b/web/Obj/sac-a-push.phh @@ -1,6 +1,6 @@ s2u = array(); $thiz->pages_flush = array(); + // create a couple of sockets for control management + if (($sockpair = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, + STREAM_IPPROTO_IP)) == FALSE) { + return FALSE; + } + static::$cnt_master = $sockpair[0]; + static::$cnt_slave = $sockpair[1]; + + pcntl_signal(SIGTERM, array("Sac_a_push", "sig_handler")); + pcntl_signal(SIGINT, array("Sac_a_push", "sig_handler")); + pcntl_signal(SIGHUP, array("Sac_a_push", "sig_handler")); + $thiz->blocking_mode = 0; // 0 for non-blocking $thiz->rndstr = ""; @@ -488,7 +546,8 @@ class Sac_a_push { /* if ($shutdown) */ /* $read = array_merge(array("$in" => $in), $socks); */ /* else */ - $read = array_merge(array(intval($this->list) => $this->list, intval($this->in) => $this->in), + $read = array_merge(array(intval($this->list) => $this->list, intval($this->in) => $this->in, + intval(static::$cnt_slave) => static::$cnt_slave), $this->socks); if ($this->debug > 1) { @@ -497,7 +556,7 @@ class Sac_a_push { } $write = NULL; $except = NULL; - $num_changed_sockets = stream_select($read, $write, $except, 0, 500000); + $num_changed_sockets = @stream_select($read, $write, $except, 0, 500000); if ($num_changed_sockets == 0) { printf(" no data in 5 secs, splash [%d]\n", $G_with_splash); @@ -567,11 +626,11 @@ class Sac_a_push { } if ($sock === $this->list) { printf("Arrivati %d bytes da list\n", strlen($buf)); - exit(21); + return(21); } - else if ($sock === $this->in) { + else if ($sock === $this->in || $sock === static::$cnt_slave) { printf("Arrivati %d bytes da stdin\n", strlen($buf)); - exit(22); + return(22); } else { // $user_a[$s2u[intval($sock)]]->disable(); @@ -596,7 +655,7 @@ class Sac_a_push { if ($sock === $this->list) { printf("Arrivati %d bytes da list\n", strlen($buf)); } - else if ($sock === $this->in) { + else if ($sock === $this->in || $sock === static::$cnt_slave) { printf("Arrivati %d bytes da stdin\n", strlen($buf)); $line = trim($buf); if ($line == "reload") { @@ -606,10 +665,10 @@ class Sac_a_push { } else if ($line == "shutdown") { if ($this->app->dump_data()) { - exit(0); + return(0); } else { - exit(1); + return(1); } } }