首页 > 编程 > PHP > 正文

php调用phantomjs给微信小程序分享

2020-03-22 19:52:28
字体:
来源:转载
供稿:网友
这篇文章主要介绍了关于php调用phantomjs给html' target='_blank'>微信小程序分享,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

知识储备

*unix系统安装phantomjs,权限相关知识

基本JavaScript语法知识

php exec函数调用REPL phantomjs

phantomjs js截图文档 http://javascript.ruanyifeng....

代码(php 代码环境为yii2框架)
 ?phpnamespace weapp/library/phantomjs;use weapp/library/BizException;class ScreenShot /** @var string 获取phantomjs 参数中 js文件的决定路径 */ private $js_path; /** @var bool|string 获取php 有777权限的临时文件目录 */ private $temp_dir; function __construct() $dir = __DIR__; $this- js_path = {$dir}/script.js  /** @var bool|string 获取php 有777权限的临时文件目录 */ $this- temp_dir = /Yii::getAlias( @runtime  * 截图并上传 * @param string $url * @param string $filename * @return string * @throws BizException public function screenShotThenSaveToOss(string $url, string $filename = temp.jpg ) //输出图片的路径 $outputFilePath = {$this- temp_dir}/$filename  //执行的phantomjs命令 //phantomjs 可执行文件必须是 绝对路径 否则导致 exec 函数返回值127错误 $cmd = /usr/local/bin/phantomjs {$this- js_path} $url $outputFilePath  //捕捉不到phantomjs命令输出结果 exec($cmd, $output); //检查截图文件是否存在 $isShotImgaeExist = file_exists($outputFilePath); if (!$isShotImgaeExist) { throw new BizException(0, phantomjs截图失败 , BizException::SELF_DEFINE); //保存截图到oss $result = $this- postScreenShotImageToOss($outputFilePath); //删除临时文件夹的截图图片 unlink($outputFilePath); return $result;
$file = new /CURLFile($screenshot_path, image/jpeg , file $tokenArray = $this- getOssPolicyToken( fetch $url = $tokenArray- host; $postData = [ key = {$tokenArray- dir}/$ossKey , policy = $tokenArray- policy, OSSAccessKeyId = $tokenArray- accessid, success_action_status = 200 , signature = $tokenArray- signature, callback = $tokenArray- callback, file = $file $ch = curl_init(); //$data = array( name = Foo , file = @/home/user/test.png curl_setopt($ch, CURLOPT_URL, $url); // Disable SSL verification curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); // required as of PHP 5.6.0 curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); //curl_setopt($ch, CURLOPT_HTTPHEADER, [ Content-Type: $mime_type ]); $res = curl_exec($ch); $res = json_decode($res); curl_close($ch); if (empty($res) || $res- code != 0) { return } else { return $res- data- * 调用管理后台阿里云oss token接口 * @param null $url * @return array public function getOssPolicyToken($url = null) $url = /Yii::$app- params[ oss_screen_shot_token_api $ch = curl_init(); // Disable SSL verification curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Will return the response, if false it print the response curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Set the url curl_setopt($ch, CURLOPT_URL, $url); // Execute $result = curl_exec($ch); // Closing curl_close($ch); $res = json_decode($result); if (empty($res) || $res- code != 0) { return []; } else { return $res- data;}
phantomjs javascript脚本内容
 use strict var system = require( system var webPage = require( webpage var page = webPage.create();//设置phantomjs的浏览器user-agentpage.settings.userAgent = Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 //获取php exec 函数的命令行参数if (system.args.length !== 3) { console.log(system.args); console.log( 参数错误  console.log( 第2个参数为url地址 第3个参数为截图文件名称  phantom.exit(1);//命令行 截图网址参数var url = system.args[1];//图片输出路径var filePath = system.args[2];console.log( ------- console.log(url);console.log( ------- console.log(filePath);console.log( ------- //设置浏览器视口page.viewportSize = {width: 480, height: 960};//打开网址page.open(url, function start(status) { //1000ms之后开始截图 setTimeout(function () { //截图格式为jpg 80%的图片质量 page.render(filePath, {format: jpg , quality: 80  console.log( success  //退出phantomjs 避免phantomjs导致内存泄露 phantom.exit(); }, 1000);});
php调用phantomjs目录结构

3184207835-5b28e6f5859bb_articlex[1].png

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !

相关推荐:

Laravel微信小程序获取用户详细信息及带参数小程序码扩展的分析

gitbash PHP执行输出中文乱编解决方式

php的快速排序的代码

以上就是php调用phantomjs给微信小程序分享的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表