一、php调用chrome浏览器方法
参考《Php使用php-webdriver库调用Chrome浏览器无头模式的2种方法》
参考上面文档完成配置后,可以正常调用到谷歌浏览器,但是有个问题是,一旦关闭命令窗口终端,Chromedriver服务或者Selenium服务就同步停止了,导致php程序报错不能正常运行,解决方法是通过nohup和&设置成后台启动,或者把Chromedriver服务或者Selenium服务设置成系统服务,这样即使关闭窗口,也不影响php的正常运行了,下面给出具体的方法
二、关闭终端也可以使用chromedriver的方法
方法一:利用nohup和&设置成后台启动chromedriver
nohup ./chromedriver --port=4444 > chromedriver.log 2>&1 & //&符号则是将命令放到后台执行,进入到对应目录/usr/bin执行
然后这样使用:
sudo netstat -tulnp | grep 4444 //查找端口4444里有哪些PID kill -9 PID号 //手动关闭 tail -f chromedriver.log //实时监控日志 ps aux | grep chromedriver //查看进程状态 kill -9 $(pgrep chromedriver) //临时关闭
方法二:设置成系统服务管理,创建systemd服务文件/etc/systemd/system/chromedriver.service,加入下面代码:
[Unit] Description=Chromedriver Service After=network.target [Service] ExecStart=/usr/bin/chromedriver --url-base=/wd/hub --port=4444 Restart=always User=root [Install] WantedBy=multi-user.target
然后这样使用:
systemctl daemon-reload //如果更改了服务文件chromedriver.service,先运行这个命令重新加载systemd配置 systemctl start chromedriver //开启服务 systemctl enable chromedriver //设置开机自启 systemctl stop chromedriver //关闭服务 sudo systemctl status chromedriver //检查服务状态
参考第二点,selenium也有2种方法实现
三、关闭终端也可以使用selenium的方法:
方法一:利用nohup和&设置成后台启动selenium
nohup java -jar selenium-server-standalone-4.0.0-alpha-2.jar > selenium.log 2>&1 & //进入到对应目录/www/server/selenium-server执行
然后这样使用:
sudo netstat -tulnp | grep 4444 //查找端口4444里有哪些PID kill -9 PID号 //手动关闭 tail -f selenium.log //实时监控日志 ps aux | grep selenium //查看进程状态 kill -9 $(pgrep selenium) //临时关闭
方法二:设置成系统服务管理,创建systemd服务文件/etc/systemd/system/selenium.service,加入下面代码:
[Unit] Description=Selenium Server After=network.target [Service] ExecStart=/usr/bin/java -jar /www/server/selenium-server/selenium-server-standalone-4.0.0-alpha-2.jar Restart=always User=root [Install] WantedBy=multi-user.target
然后这样使用:
systemctl enable selenium //如果更改了服务文件selenium.service,先运行这个命令重新加载systemd配置 systemctl start selenium //启动服务 systemctl enable selenium //设置开机自启 systemctl stop selenium //关闭服务 sudo systemctl status selenium //检查服务状态
注意:在设置开机自启动里,chromedriver.service和selenium.service不要同时设置,因为都是使用的4444端口,否则报错
php头部可根据需要加如下代码,不添加代码也可以正常运行
ignore_user_abort(true); // 忽略终端中断信号
set_time_limit(0); // 移除脚本执行时间限制