Ruslan Osmanov avatar Ruslan Osmanov committed 22e7d6e

Add: signals example

Comments (0)

Files changed (1)

examples/signal.php

+<?php
+/*
+Launch it in a terminal window:
+
+$ php examples/signal.php
+
+In another terminal window find out the pid and send SIGTERM, e.g.:
+
+$ ps aux | grep examp
+ruslan    3976  0.2  0.0 139896 11256 pts/1    S+   10:25   0:00 php examples/signal.php
+ruslan    3978  0.0  0.0   9572   864 pts/2    S+   10:26   0:00 grep --color=auto examp
+$ kill -TERM 3976
+
+At the first terminal window you should catch the following:
+
+Caught signal 15
+*/
+class MyEventSignal {
+	private $base;
+
+	function __construct($base) {
+		$this->base = $base;
+	}
+
+	function eventSighandler($no, $events, $c) {
+		if ($events & EVENT_SIGNAL) {
+			echo "Caught signal $no\n"; 
+        	event_base_loopexit($c->base);
+		} else {
+			echo "Unknown error. Stopping\n";
+        	event_base_loopexit($c->base);
+		}
+	}
+}
+
+$base = event_base_new();
+$c    = new MyEventSignal($base);
+$no   = SIGTERM;
+$ev   = event_new($base, $no, EVENT_SIGNAL | EVENT_PERSIST, array($c,'eventSighandler'), $c);
+
+event_add($ev);
+
+event_base_loop($base);
+?>
+
+
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.