【问题标题】:Fetching a file from a PHP file in Google App Engine从 Google App Engine 中的 PHP 文件中获取文件
【发布时间】:2011-09-30 12:22:52
【问题描述】:

我需要知道我是否可以在 GAE 的 php 中使用 file_get_html 或任何等效函数?我知道它有一个叫做 URLFetch() 的东西,但我无法理解如何从 php 文件中调用它。

有什么帮助吗?

【问题讨论】:

  • 是的,您可以在 PHP 中使用 file_get_contents 和朋友,它们在内部使用 urlfetch。

标签: java php google-app-engine urlfetch quercus


【解决方案1】:

您不能在 Google App Engine 上运行 PHP。您可以创建一个 servlet,该 servlet 将从任何给定的 URL 读取并以您需要的任何方式在 Java 中操作数据(因为您使用 Java 标记标记了这个问题)。

来自AppEngine URL Fetch Java API Overview

URL url = new URL("http://www.example.com/atom.xml");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;

while ((line = reader.readLine()) != null) {
    // ...
}
reader.close();

如果您的意思是您正在另一个应用程序中运行 PHP,并且您希望从所述 PHP 应用程序调用您的 AppEngine servlet,那么您可以将执行此 URL 获取的 servlet 映射到您的 AppEngine 应用程序中的一个 URL,然后点击该 URL从您的 PHP 应用程序。然而,这似乎是一个糟糕的设计,因为您进行了两次网络调用,而您本来可以在 PHP 应用程序中使用它。

【讨论】:

  • 嘿@Jonathan,我没那么无知。 Quercus 是 PHP 的纯 Java 实现,我已经在我的系统上配置了它。
【解决方案2】:

这是我通过 Google App Engine 上的 Quercus 使用 PHP 为 URL Fetch 创建的快速而肮脏的包装函数:

function fetch_url($url){

    import java.net.URL;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;

    $java_url = new URL($url);
    $java_bufferreader = new BufferedReader(new InputStreamReader($java_url->openStream()));

    while (($line = $java_bufferreader->readLine()) != null) {
        $content .= $line;
    }

    return $content;
}

// Sample usage:
echo fetch_url('http://google.com');

希望这可以帮助像我一样迷失的人。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2018-07-22
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多