php关闭终端也可以使用Chromedriver或者Selenium方法

一、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); // 移除脚本执行时间限制‌

相关推荐