gc-cycle-callback.phpt 463 B

12345678910111213141516171819202122232425262728293031
  1. --TEST--
  2. GC can cleanup cycle when callback references fiber
  3. --FILE--
  4. <?php
  5. $ref = new class () {
  6. public $fiber;
  7. public function __destruct() {
  8. var_dump('DTOR');
  9. }
  10. };
  11. $fiber = new Fiber(function () use ($ref) {
  12. die('UNREACHABLE');
  13. });
  14. $ref->fiber = $fiber;
  15. $fiber = null;
  16. $ref = null;
  17. var_dump('COLLECT CYCLES');
  18. gc_collect_cycles();
  19. var_dump('DONE');
  20. ?>
  21. --EXPECT--
  22. string(14) "COLLECT CYCLES"
  23. string(4) "DTOR"
  24. string(4) "DONE"