我们有一个批处理脚本来执行一些这些操作
- 从 WHMCS 数据库中获取数据
- 对于每一行;如果行需要处理
- 连接到数据指定的外部 MySQL 数据库(远程服务器)
- 获取和处理相关数据
- 近距离远距离连接
- 更新 WHMCS 数据库
- ...
现在,虽然这很简单,但它在步骤 2.4 的第一行之后中断,因为 WHMCS 没有为其查询指定资源链接,并且建立第二个 mysql 连接会中断默认的 WHMCS 查询。一个简单的代码说明了我的意思:
$result = mysql_query("SELECT * FROM sometable WHERE condition");
while ($row = mysql_fetch_assoc($result)) {
$conn = mysql_connect($row['mysql_host'], $row['mysql_user'], $row['mysql_pass']);
...
mysql_close($conn);
mysql_query("UPDATE sometable SET lastrun=NOW() WHERE id={$row['id']}");
}
第二次调用mysql_query
以及mysql_fetch_assoc
第二次迭代中的调用都将失败。
有没有办法“恢复”以前的连接所以它不会中断?请不要建议在$whmcsmysql
任何地方使用资源链接,这不是一个可行的选择,因为我无法修改加密的 WHMCS 源代码,等等。