【问题标题】:How to emulating a browser in php to execute javascript files?如何在 php 中模拟浏览器来执行 javascript 文件?
【发布时间】:2014-04-20 21:01:24
【问题描述】:

我有一个 php 文件,它可以生成 htmljs 文件,可以在浏览器中绘制图形。

但是由于这些文件必须由服务器端的 php 创建,所以我不能使用浏览器。我想要做的是能够模拟浏览器并直接从 php 中从这些文件创建图像,以便通过电子邮件将它们发送到相应的部门。

我认为这可以通过以下步骤来完成:

  1. 一些可执行程序可以从 Command Promt 运行,参数是我的文件
  2. PHP 可以向 Command Promt 发送命令,告诉它使用生成图像的程序运行“创建的文件”。
  3. 然后我会通过电子邮件发送该图片

可用性示例

假设您正在浏览器中运行 extjs Web 应用程序,对吧?没有用户交互,它可能会持续运行数天。现在,您无需执行任何操作,就可以将 CPU 性能图的图像发送给您的测试部门。

有人知道最好的方法吗? 谢谢

【问题讨论】:

  • 你的意思是,生成页面的打印屏幕之类的?
  • 图像看起来与浏览器中的完全一样。如果 html 或 JS 创建即 ExtJS 图表,我想在没有浏览器参与的情况下在 php 中生成该图表的图片
  • 如果您只需要渲染图像(比如说 JPEG)甚至是 PDF,使用图形渲染库会更容易。
  • 我仍然不确定你的意思。如果你有 JS 用 Canvas 生成这个图像,我想你可以用 GD2 重写你的脚本来用 PHP 创建它。
  • @Havenard:假设您正在浏览器中运行 extjs Web 应用程序,对吧?没有用户交互,它可能会持续运行数天。现在,您无需执行任何操作,就可以将 CPU 性能图的图像发送给您的测试部门。

标签: javascript php emulation


【解决方案1】:

使用服务器端图形图像生成器。您不需要模拟浏览器然后取回服务器 - 这更加复杂且不可靠。

我在几个项目中使用过 JPGraph (http://jpgraph.net) - 它可以在服务器端生成图形图像到某个临时目录中,然后您可以包含到电子邮件中或输出到客户端。如果您发现 jpGraph 不是合适的解决方案,请查看替代方案:

但是,如果您仍然发现从客户端获取 javascript 输出并将其带回服务器是您的方法,那么您可能需要查看http://wkhtmltopdf.org/

【讨论】:

  • 这不是免费的,对吧?另外我不想使用他们的图表,我想使用 ExtJS 图表。这就是为什么我想将 html 文档转换为图像
  • JPGraph 是免费的,还有一些替代品(见链接)。 WkhtmlToPdf 也是免费的。
  • +1 作为答案,但我不能接受,因为这不是我想要的:)
【解决方案2】:

我找到了我要找的东西,虽然有点晚了,但仍然......

我正在使用phantomjs。真的很酷。您可以编写 php 文件并将其提供给 phantomjs,它会创建 imagepdf,就像您从浏览器截屏一样。

这是 phantomjs 目录中命令的样子:

phantomjs "youJavascriptFile" "outputType" "fileName" "file"

在哪里

  • outputType 可以是“字母”或“宽 x 高”
  • 文件可以是服务器 php 文件的 http 路径
  • youJavascriptFile 是一个 js 文件,您可以在其中使用其他输入和一点 phantomjs 魔法来创建输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2012-06-28
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    相关资源
    最近更新 更多