gpt4 book ai didi

php - 在 2 个站点之间生成 PDF

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:11 25 4
gpt4 key购买 nike

我正站在充满解决我问题的潜在方法的十字路口前面。我的问题是我想将特定用户引向一个独特的页面,该页面为他们呈现相关的 PDF 文件。最好是,我想将他们引向一个站点,该站点没有相关的 MySQL 数据和 pdf 渲染插件。希望您能阐明我应该使用哪种解决方案。

引用

  • 站点 A - 我希望推荐他们访问的站点
  • 站点 B - 包含 MySQL 数据和 PDF 插件的站点

信息

  • 这两个站点都是通过 CakePHP 1.3 构建的
  • 站点 A 目前没有附加数据库。它仅在仅对站点 B 进行 API 调用时运行。
  • 这些 PDF 生成起来不会那么繁重,不过找到一个解决这个问题的解决方案会很有趣
  • 对这些 PDF 的引用是根据事件发生的,不会同时发送给成千上万的用户。

解决方案#1

将他们引到站点 B 并在那里生成所有内容。

优点:易于修复。
缺点:我不希望这些用户知道网站 B。网站 B 主要用于内部交流,最好让给定的用户离开。
想法:最好避免这个。

解决方案#2

站点 A 上有一个页面 cURLs等于解决方案#1 的页面,然后输出相同的结果。

优点:几乎同样容易修复。
缺点:想不出。
想法:浏览器会理解我输出的是 PDF 吗?还是我(如果可能)从 cURL 请求复制 header 回复并在输出前将它们设置在自己的 header() 中?

解决方案#3

在站点 B 中生成 PDF 一次并将其放置在站点 A 上。然后只需引用 .pdf 链接即可。

优点:加载速度更快。在这种情况下并不重要,甚至可能会被忽视。
缺点:无法轻松修改 PDF 输出。
想法:我将如何传输文件?这两个站点位于同一台服务器上,因此只需更改路径即可,但是站点之间的所有其他通信都是为了它们不需要共享服务器而进行的。很遗憾打破了那个设计。也许我必须执行高级 cURL 请求并将 pdf 文件作为 POST 从站点 B 发送到站点 A 并上传?不过,这似乎也不是一个完美的解决方案。

解决方案#4

从站点 A 到站点 B 运行 API,以根据 url 中的 ID 获取相关数据。但在站点 A 上也有 PDF 插件。

优点:在某种程度上,这是一种非常合乎逻辑的方法。
缺点:我更愿意只在站点 B 上生成所有 PDF。让管理所有这些变得更容易。
想法:我有点不确定与解决方案 2 相比,这种方法有多少(如果有的话)好处。

非常感谢您的宝贵时间。请激发其中一种给定的解决方案,或展示您自己的解决方案。

编辑:尽管代码示例总是受到赞赏,但我更感兴趣的是为什么应该使用其中一种或另一种解决方案的共鸣和逻辑。我已经知道如何通过编码解决大部分这些解决方案。对于访问者,请随时链接到与您的回复相关的功能和方法。

最佳答案

您似乎想对公众隐藏站点 B。

最简单的方法是在站点 A 和站点 B 之间创建反向代理。你可以做一些像 sitea.com/pdf-items/将服务于 siteb.com/

编辑:

反向代理可以跨域,服务器不必共享任何共同点,除了站点 A 可以访问站点 B(听起来已经可以)

Apache 有一个使用 mod_proxy ( http://httpd.apache.org/docs/2.2/mod/mod_proxy.html ) 的简单方法

快速谷歌搜索一下在 Apache 上设置它的指南。 http://www.apachetutor.org/admin/reverseproxies

Nginx 也有一个 http://www.cyberciti.biz/tips/using-nginx-as-reverse-proxy.html

IIS 有点复杂,我从未设置过它,但根据文档确实存在这种能力。

编辑 2:接近

这里我们不用担心PHP组件。发生的情况是 Apache 服务器将根据指定的代理映射转发请求,例如如果设置了代理 Sitea.com/pdf siteb.com/那么 sitea.com/pdf/alpha.pdf 实际上会请求 siteb.com/alpha.pdf 。在此架构中,它将忽略所有 sitea.com PHP 路由,但会尊重 siteb.com 路由,因为它是一个成熟的请求,但由 sitea 的网络服务器完成。

关于兑现,对 siteb 的请求,这意味着 sitea.com/pdf/getpdf.php?id=1 实际上会像转到 sitea.com/getpdf.php?id=1 一样通过所有 Action 。

或者,如果你想在 siteA.com 上设置一个 VHOST,例如 pdf.sitea.com,你可以设置 pdf.sitea.com 映射到 siteb.com 的代理,但是如果 sitea 和 siteb 都是可公开访问。

如果您的受众可以使用 sitea.com,并且 siteB 位于访问受限的防火墙后面,则反向代理的效果最佳,因此该代理将允许 sitea.com 访问 siteb.com 的某个部分,否则将无法访问。

将修改的文件是主机的 siteA.com Apache 配置,方法是在 VHOST 或服务器配置下启用 proxy_mod 并设置 ProxyPass 和 ProxyReversePass。

关于php - 在 2 个站点之间生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13606141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com