问题标签 [google-app-engine-php]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
95 浏览

php - Google App Engine (GAE) - 每分钟为每个用户同时运行相同的任务

我的 PHP 应用程序目前有 2 个用户,部署到 Google App Engine (GAE) 标准环境。我的目标是在一年内拥有多达 100 个用户。

所有用户都执行相同的应用程序代码,但拥有自己的数据库副本。

每个用户每分钟需要与 3 个第三方 API 同步数据。其中一个 API 处理请求和响应的速度很慢。其中一个 API 有一些严格的限制,如果在 60 秒内进行了多个 API 调用,它将在一段时间内阻止访问。

我目前每分钟运行一个 cronjob,它从用户数据库中获取 API 密钥,进行三个 API 调用,然后在第二个用户数据库上重复该过程。这工作正常,但显然不会扩展。

使用 Google App Engine 资源,我制定了以下计划来提高我的应用程序的可扩展性并应对 100 多个用户:

  1. Cronjob 每分钟执行一次 PHP 脚本。
  2. PHP 脚本获取服务器上的数据库列表。
  3. PHP 脚本遍历数据库列表,为每个数据库创建 3 个 GAE 推送任务(即每个 API、每个用户 1 个)。
  4. 每个推送任务调用处理特定 API 的同步过程的应用程序端点。

我还没有开始编写上述例程,但它似乎在原则上有效。我预见的潜在问题是:

  1. 在 PHP 脚本完成创建所有推送任务之前,Cronjob 达到了 1 分钟的执行限制。我认为这不太可能,因为我可以将 100 个任务捆绑到一个 addTasks() 调用中,因此对于 100 个用户,脚本执行时间应该小于 10 秒。

  2. 由于执行时间缓慢,任务队列会备份,这意味着 API 调用的频率低于每分钟。这可能会导致一些无法管理的数据同步问题。

  3. 用户的任务执行会延迟,但由于 cronjob 每分钟创建新任务,这可能会导致同一用户和同一 API 的多个任务在不到 60 秒的时间内执行,从而阻止对其中一个 API 的访问。

是否有人对上述内容有任何想法,有这种性质的任务队列的经验,或者关于 GAE 推送队列的任何提示可以帮助我吗?

0 投票
0 回答
83 浏览

php - 西班牙语 App Engine 标准 PHP 5.5 中的日期

在我的环境(App Engine 标准 PHP 5.5)中,日期的语言有问题。我需要用西班牙语给他们看,但我做不到。在我的本地环境中,它的翻译没有问题,但在生产中它以英文显示日期。

在我的 php.ini 中,我已经放了这个:

在我需要用西班牙语(阿根廷)显示日期的代码中,我尝试了这个:

并以这种方式:

我做错了什么吗?

非常感谢

0 投票
1 回答
433 浏览

google-app-engine - 除非设置了全部捕获处理程序,否则 Google App Engine 处理程序将不起作用

我正在努力在我的标准引擎 php 应用程序的文件handlers部分中设置 URL 处理程序。app.yaml

以下代码同时生成mydomain.com/abc.php并在我mydomain.com的文件夹中显示文件:abc.phpdist

但是,我不想要一个捕获所有处理程序,所以我删除了它,所以只存在 1 个处理程序:

现在,当我转到 时mydomain.com/abc.php,我收到 500 错误:

500 错误

如何在不对所有 URL 使用处理程序的情况下使目标 URL 在 GAE 上工作?

0 投票
1 回答
376 浏览

symfony - Google App Engine 上的 document_root 无法识别

我正在使用灵活的环境配置在 Google App Engine 上运行 Symfony 4 应用程序。

public/index.php是项目根目录的索引路径。

我定义了一个document_root: public,但它不被识别。

例如:

https://myproject.appspot.com/返回一个404.

https://myproject.appspot.com/public/index.php返回一个200.

它是php文件还是静态资源都没有关系。我必须添加public到路径才能访问任何内容。当然,期望的行为是public我的文档根目录。

我的相关部分app.yml在这里:

这遵循我找到的所有文档。关于如何解决这个问题的任何想法?

0 投票
1 回答
54 浏览

php - 在激活应用程序防火墙的情况下从 appengine 发送邮件

我正在使用 PHP 和 appengine 开发一个微服务。我实现了用 sendgrid 发送电子邮件。出于安全原因,防火墙已激活,但随后电子邮件服务不再工作。

我知道防火墙在这种情况下仅用于传入流量,但这是我唯一更改的内容,当然,如果我关闭防火墙,应用程序将正常工作。

更新

appengiene 微服务是从 cron 服务调用的。

0 投票
2 回答
423 浏览

google-app-engine - 将 Google App Engine 作为 PHP 命令行运行?

我目前有一个用 PHP 编写的小型 Google App Engine 项目。在传统的 Web 服务器上,我会简单地通过命令行调用这个特定的代码(例如 phpwhat.php)。如果可能的话,我想用 cron.yaml 将它设置为每隔一小时左右运行一次,而不调用 HTTP 请求。你会怎么做呢?

0 投票
0 回答
131 浏览

google-app-engine - 自定义环境中的 Google AppEngine Cron 作业

在 App Engine 上运行 cron 作业时遇到问题。

我有一个 App Engine Flex 自定义应用程序正在运行(使用 php:7.0-apache)

我还有一个 URL,我可以调用它来运行我的工作,比如说 myapp.com/cacheupdate.php,当我指向该 URL 时,一切正常,因为缓存已正确更新。

所以我添加了一个 cron 作业:

cron 作业显示在控制台中,但总是出错。所以我在我的 app.yaml 文件中为它添加了一个处理程序:

我尝试了几种不同的方法来指定源 URL,但问题仍然存在。

我假设这里的问题是我正在使用自定义 Docker 映像来构建实例,有没有更好的方法来运行 cron 作业或者我错过了什么?

0 投票
1 回答
88 浏览

php - 使用 mysqli 将 PHP 连接到 Google Cloud SQL 数据库时,用户名和密码使用什么?

我知道使用 PHP 从 App Engine 连接到 Google Cloud SQL 的一般语法是:

但是,我不确定用户名和密码。我在这里尝试使用我的实例用户名和密码,以及我的 gmail 用户名和密码。根似乎没有工作。有没有办法找出这些是什么?我读过root是默认的,但我想我不明白。

我可以看到我的连接不起作用(出现 NoConnect() 错误)的唯一另一个原因是我的 yaml 文件可能写错了。目前,我有:

我需要在此处包含 MySQL 用户名和密码吗?

0 投票
2 回答
539 浏览

google-app-engine - GAE 邮件发送配额 = 100/天?

我有自己的 G-Suite Business 域和 GAE 中的应用程序,可以向我们的客户发送电子邮件。但是每天限制 100 次发送太低了。

如何将邮件发送配额增加到每天 100 以上?那有可能吗?

感谢您的任何想法。

0 投票
2 回答
430 浏览

google-app-engine - Google App Engine 实例的 IP 会以特定的时间间隔自动更改

我有一个非常严重的问题,即我的 App Engine 实例的 IP 会以特定的时间间隔自动更改。所以我的实时应用程序停止工作。请你帮忙,以便我们可以让它再次工作。

现在要解决这个问题,我们必须每次更改 IP 并在 SQL 数据库中手动设置,这不是正确的方法。

提前致谢。