Skip to content

Commit b22db46

Browse files
committed
% improve heartbeat handler execution by invoking exception handling after callback
1 parent 6a34f50 commit b22db46

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

scheduler.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,10 @@ static zend_always_inline void scheduler_next_tick(void)
11251125
zend_object **exception_ptr = &EG(exception);
11261126
zend_object **prev_exception_ptr = &EG(prev_exception);
11271127

1128-
ZEND_ASYNC_SCHEDULER_HEARTBEAT;
1128+
if (ZEND_ASYNC_G(heartbeat_handler) != NULL) {
1129+
ZEND_ASYNC_G(heartbeat_handler)();
1130+
TRY_HANDLE_SUSPEND_EXCEPTION();
1131+
}
11291132

11301133
execute_microtasks();
11311134
TRY_HANDLE_SUSPEND_EXCEPTION();
@@ -1387,6 +1390,7 @@ ZEND_STACK_ALIGNED void fiber_entry(zend_fiber_transfer *transfer)
13871390

13881391
if (*heartbeat_handler) {
13891392
(*heartbeat_handler)();
1393+
TRY_HANDLE_EXCEPTION();
13901394
}
13911395

13921396
execute_microtasks();

0 commit comments

Comments
 (0)