连接到Google应用引擎上的远程MySQL数据库

时间:2013-11-26 12:38:27

标签: php mysql google-app-engine

我正在开发一个在Google应用引擎上运行的应用程序。通常情况下,如果使用Google Cloud SQL,我必须启用结算/付款。所以首先,我决定远程连接到另一台服务器上的mysql数据库。它完全脱机工作,但在部署我的应用程序后,它无法正常工作。显然,GAE不支持远程连接...还有另一种方法可以解决这个问题吗?隧道?

注意:使用HTTP API从我的数据库中返回信息......需要更多的编程工作。

5 个答案:

答案 0 :(得分:7)

1.8.8中,我们可以使用PHP的远程套接字。

您需要确保您的应用程序已启用计费,以便远程套接字可用。完成后,您应该能够从应用引擎应用程序连接到远程MySQL数据库。

答案 1 :(得分:2)

不幸的是,App Engine不支持外部呼叫:

  

App Engine应用程序不能:

     

写入文件系统。 PHP应用程序可以使用Google云端存储   用于存储持久文件。允许从文件系统读取,   以及随应用程序上传的所有应用程序文件都可用。

     

直接打开套接字或访问其他主机。应用程序可以使用   App Engine URL提取服务以发出HTTP和HTTPS请求   端口80和443上的其他主机。

     

慢慢回应。必须在其中处理对应用程序的Web请求   几秒钟。需要很长时间才能做出响应的流程   终止以避免Web服务器过载。

     

进行其他类型的系统调用。

答案 2 :(得分:0)

Stuart Langley所说的也适用于Python。

您必须启用帐单才能使用远程套接字。但是从我的实验来看,App Engine运行时附带的MySQLdb似乎无法使用外部MySQL数据库。

您可以使用Oracle提供的纯python库mysql-connector-python。但是要注意,延迟很高(如果每个请求打开一个新连接,总延迟可能是5秒加)。也许是因为远程套接字不是本机实现,而是钩子下的代理或服务。

答案 3 :(得分:0)

我有一个外部MySQL数据库,我正在从Google App Engine连接。我写过这个教程。我希望这能帮助你和其他人。 of this question

答案 4 :(得分:0)

这对我来说也是同样的问题,但不幸的是我做到了。

这是我的app.yaml

的示例
runtime: php72
env_variables:
    LOG_CHANNEL: stackdriver
    ## Put production environment variables here.
    APP_KEY: YOUR_APP_KEY
    APP_STORAGE: /tmp
    VIEW_COMPILED_PATH: /tmp
    SESSION_DRIVER: cookie
    ## Set these environment variables according to your CloudSQL configuration.
    DB_DATABASE: YOUR_DB_NAME
    DB_USERNAME: YOUR_DB_USERNAME
    DB_PASSWORD: YOUR_DB_PASSWORD
    DB_CONNECTION: mysql
    DB_HOST: YOUR_DB_PUBLIC_AP_ADDRESS
    DB_PORT: 3306

如果您在cPanel中使用远程 ,请不要忘记在cPanel菜单中添加访问主机,并填写主机(允许使用%通配符)使用:%.%.%.%并添加。

然后您可以解决此问题……