我目前正在使用一个名为puphpeteer的PHP puppeteer改编版本。它工作得很好,使用了一个名为rialto-php的库(已弃用,但它仍然工作得很好),它能够从PHP管理Node资源,这非常简洁。我正在使用最新的更新,使用puppeteer 20,PHP 8.2和Node 16.20。
但是我无法理解为什么它每次调用都会创建6个Chrome进程,并且当进程结束时它们都失效
614 ? 00:00:00 chrome <defunct>
628 ? 00:00:00 chrome <defunct>
629 ? 00:00:00 chrome <defunct>
682 ? 00:00:00 chrome <defunct>
696 ? 00:00:00 chrome <defunct>
718 ? 00:00:00 chrome <defunct>
我也使用最新的chrome-stable与puppeteer与这些参数
$browser = $puppeteer->launch([
'executable_path' => 'google-chrome-stable',
'args' => ['--no-sandbox', '--disable-setuid-sandbox'],
]);
这里是一个要点与功能,它只是得到的iFrame网址从我的网页。https://gist.github.com/SirLouen/8c274ae588eece30a14b43e7af4880f8
你有什么想法,我如何才能确定这个问题的罪魁祸首?
第一件事是,我正在考虑将这些代码转换为JS,并直接在原始puppeteer库上测试它,但我已经与其他使用puppeteer的人发表了评论,他们没有发现这个已失效的问题。
1条答案
按热度按时间hts6caw31#
下面是JS中直接从node运行的等价代码。这花了我一段时间,因为我以前从未使用过node,我必须阅读文档。
https://gist.github.com/SirLouen/6c2b540d0f22d234cc9a4df9e3c5bf26
但运行后,也结束了一吨Chrome失效的进程
结论:问题尚未解决,但万一在某个地方发现这个问题,我留下我的结果。在这种情况下, puppet 师体内可能有窃听器。我会在他们的bug跟踪器中报告。