0

是否可以在 PHP 程序迭代之间保持 SQL 连接/会话“打开”,因此程序不必继续重新登录?

我编写了一个 PHP 程序,它不断(并且合法/尊重地)轮询网络以获取统计天气数据,然后将其转储到本地 MYSQL 数据库中进行分析。我不想通过本地数据库浏览器查看数据,而是希望将其作为由外部 Web 主机托管的在线网页提供。

不确定解决这个问题的最佳方法,我将本地 MYSQL 数据库导出到我的 Web 主机的服务器上,认为因为 PHP 程序需要不断循环(并且比默认运行时更长,HTML 也不断刷新其页面) ,最好将“引擎”保留在本地计算机上,这样我可以让页面在浏览器中不断循环,然后让它连接到我的 Web 服务器上的数据库并将数据转储到那里。

它工作了几个小时。但是,正如我担心的那样,我无法访问我的 cPanel 登录名/主机。此后,我通过自己的测试确认我的 IP 已被阻止(托管公司目前已关闭),这无疑是由于 PHP 程序每 10 分钟重新连接到在线 SQL 数据库一次。我不认为这种行为和连接之间的时间量足以保证将 IP 黑名单列入黑名单,但唉,确实如此。

现在,除了将我的 IP 列入托管公司白名单的可能性之外,有没有办法让 MYSQL 会话/连接保持活动状态,这样程序就不必在迭代之间保持重新登录?

我想这可能只有在我可以让 PHP 程序无限期运行时才有可能,也许在手动调整最大运行时间限制之后(我不知道是否还会有其他外部限制,也许是浏览器限制)。我不确定这是否可行,或者是否可行。

MYSQL 连接是否有某种类型的低级系统范围的“cookie”?随着 PHP 程序完成并关闭(然后等待 HTML 刷新页面),我想唯一不必重新登录的方法是使用某种类型的 cookie 或 IP 地址访问(这需要服务器端功能/实现)。

我承认我在这里的方法可能不是实现这一目标的最有效/最有效的方法。因此,我也愿意接受可以实现相同最终结果的替代方法和建议——一个持续的网络抓取循环,该循环转储到数据库中,然后将数据库不断地转储到网页中。

(我正在寻找一种方法来实现这一点,而不是向我的虚拟主机询问 IP 白名单,或者仅仅确定他们的防火墙的访问禁止率。如果确实没有可行或更好的方法,我会做这两种方法中的任何一种。)

4

1 回答 1

2

也许您可以尝试持久数据库连接。

此链接解释了持久连接:http: //in2.php.net/manual/en/function.mysql-pconnect.php

于 2013-01-14T06:07:06.547 回答