@@ -29,34 +29,56 @@ function run() {
29
29
$ loop ->run ();
30
30
}
31
31
catch ( \Exception $ e ) {
32
- trigger_error ( $ e ->getMessage () );
32
+ trigger_error ( $ e ->getMessage () . ' in ' . $ e -> getFile () . ' : ' . $ e -> getLine (), E_USER_WARNING );
33
33
}
34
34
}
35
35
36
36
function _messageCallback ( Message $ message , EventLoop $ loop , $ socket ) {
37
37
38
38
$ headers = $ message ->headers ;
39
39
40
- if ( isset ( $ headers [ 'includes ' ] ) ) {
41
- foreach ( array_filter ( explode ( ', ' , $ headers [ 'includes ' ] ) ) as $ path )
42
- require_once $ path ;
40
+ try {
41
+
42
+ if ( isset ( $ headers [ 'includes ' ] ) ) {
43
+ foreach ( array_filter ( explode ( ', ' , $ headers [ 'includes ' ] ) ) as $ path )
44
+ require_once $ path ;
45
+ }
46
+
47
+ if ( !isset ( $ headers [ 'function ' ] ) ) {
48
+ $ result = 'Request has no \'function \' header ' ;
49
+ $ status = 'invalid_request ' ;
50
+ }
51
+ else if ( !is_callable ( $ headers [ 'function ' ] ) ) {
52
+ $ result = '\'' . $ headers [ 'function ' ] .'\' is not callable ' ;
53
+ $ status = 'invalid_request ' ;
54
+ }
55
+ else {
56
+ $ result = call_user_func ( $ headers [ 'function ' ], $ message ->body );
57
+ $ status = 'ok ' ;
58
+ }
43
59
}
60
+ catch ( \Exception $ e ) {
44
61
45
- if ( !isset ( $ headers [ 'function ' ] ) )
46
- throw new \Exception ( 'Request has no \'function \' header ' );
47
- if ( !is_callable ( $ headers [ 'function ' ] ) )
48
- throw new \Exception ( '\'' . $ headers [ 'function ' ] .'\' is not callable ' );
62
+ $ result = $ e ->getMessage () .' in ' . $ e ->getFile () .': ' . $ e ->getLine ();
63
+ $ status = 'exception ' ;
64
+ }
49
65
50
- $ result = call_user_func ( $ headers [ 'function ' ], $ message ->body );
51
- $ this ->sendMessage ( $ loop , $ socket , 'job-result ' , $ headers [ 'job-num ' ], $ result );
66
+ $ this ->sendMessage ( $ loop , $ socket , 'job-result ' , $ headers [ 'job-num ' ], $ status , $ result );
52
67
}
53
68
54
- private function sendMessage ( EventLoop $ loop , $ socket , $ cmd , $ jobNumber = null , $ body = '' ) {
69
+ private function sendMessage ( EventLoop $ loop , $ socket , $ cmd , $ jobNumber = null , $ status = 'ok ' , $ body = '' ) {
70
+
71
+ if ( !is_string ( $ body ) )
72
+ throw new \InvalidArgumentException ( 'Worker result must be a string ' );
55
73
56
74
$ message = new Message ();
57
75
$ message ->headers [ 'cmd ' ] = $ cmd ;
58
- if ( $ jobNumber !== null )
76
+
77
+ if ( $ jobNumber !== null ) {
78
+ $ message ->headers [ 'job-status ' ] = $ status ;
59
79
$ message ->headers [ 'job-num ' ] = $ jobNumber ;
80
+ }
81
+
60
82
$ message ->body = $ body ;
61
83
62
84
$ loop ->send ( $ socket , $ message );
0 commit comments