2

我在一个不使用 Symfony 的 PHP 项目中使用 Symfony Panther 进行网页抓取(不是测试)。我通过 Composer 安装。每次我需要抓取用户提交的链接时,我都会启动一个新的 Chrome 浏览器。

$client = Symfony\Component\Panther\Client::createChromeClient('/usr/bin/chromedriver');
$client->request('GET', $url);
$crawler = $client->waitFor('body');

为每个提交的文件启动一个新的 Chrome 浏览器$url既慢又占用资源,所以我想让 Chrome 客户端在端口 9515 上运行,然后每个用户的$url请求都可以连接到同一个实例。根据 Github 上的一些用户评论,这听起来是一种合理的方法:

  • 在 Linux 服务器上启动一个 Chrome 实例,在端口 9515 上运行
  • 使每个 url 请求连接到该实例。

我将第一行,即 createChromeClient 放在 CRON 作业的 php 脚本中,但它从未启动 chrome 客户端,我也没有收到任何错误。任何想法如何实现这一目标?

4

1 回答 1

0

“不显示”浏览器(此处为 Chrome)是默认方式,因为它更快。它被称为“无头”

要显示它,您必须指定 "PANTHER_NO_HEADLESS" :

PANTHER_NO_HEADLESS=1 vendor/bin/phpunit -c phpunit.xml

此外,您可以检查 chome 是否正在运行:(或任何系统日志)

ps aux | grep chrome
于 2021-12-13T17:39:51.893 回答