【问题标题】:PHP: API-Webhook remember variablesPHP:API-Webhook 记住变量
【发布时间】:2023-03-09 11:25:01
【问题描述】:

我正在Telegram Bot API 上构建一个机器人。对于特定功能,我的 bot 在使用 webhook 重新发送数据时应该记住变量。

简而言之;每次我发送消息时,都会加载 PHP 文件(在 Google App Engine 上运行),这是由 Telegram Bot API 调用的。

每次 API 向 webhook 发送数据时,机器人都会“重新加载”,当然所有变量都会重置。我正在考虑使用$_SESSION-Variable,但这也行不通。

除了将数据保存在 MySQL 数据库中或将其写入文件之外,还有其他可能临时存储数据某处吗?

谢谢!

【问题讨论】:

    标签: php api variables bots


    【解决方案1】:

    你可以使用

    file_get_contents

    file_put_contents

    将您的状态保存到文件中,并在您再次需要时加载它。

    【讨论】:

      【解决方案2】:

      除非 Telegram API webhook 尊重 cookie,否则您需要将状态保存在某个地方。在这种情况下,保存到文件似乎是最好的选择。

      Google App Engine 提供了一种使用 PHP 流的方法,可以轻松地读取和写入 Google Cloud Storage。 https://cloud.google.com/appengine/docs/php/googlestorage/

      执行此操作的一种方法是将需要保留的任何变量放入数组中,然后在保存之前编码为 JSON。然后,当您读取文件时,只需将 JSON 解码为关联数组即可继续操作。

      $path = 'gs://my_bucket/my_vars.json';
      
      // read the variables - you'll want to check for existence, etc.
      $myVarsJson = file_get_contents($path);
      $myVarsArr = json_decode($myVarsJson,true);
      
      // now you can access and modify the values of $myVarsArray
      
      // DO SOMETHING...
      
      // then save them
      $myVarsJson = json_encode($myVarsArr);
      file_put_contents($path);
      

      【讨论】:

      • 谢谢!我很快就会看看 Google 存储。其实,你只是表达了我的第一次尝试。我试图将文件直接保存到机器人所在的位置。我想那是我的错误,因为我不知道。谢谢!
      • 当然可以。尝试完成后,请回过头来投票并接受作为答案,或者如果您需要进一步澄清,请告诉我。
      • 是的,我会这样做的。实际上,我还是 Stack Overflow 的新手,所以我没有足够的声望来投票。 :p
      猜你喜欢
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 2019-08-28
      相关资源
      最近更新 更多