我目前正在使用SoapClient通过PHP脚本访问SOAP Web服务。我的脚本调用多个下标(每秒约30个),每个下载发送一个请求,然后将响应推送到MySQL数据库。我的进程试图模拟“异步”请求/响应机制。
在我的下标中,我连接到mysql并在完成后关闭连接。我每秒运行大约30个下标。我遇到了一个问题,我正在最大化MySQL连接。
我不想增加最大连接数,因为我认为这是不好的做法。有没有更好的方法来解决这个问题?我想我可以以某种方式在下标和脚本之间共享一个mysql连接。
答案 0 :(得分:0)
如果所有下标按顺序运行,则在一个线程中,您可以连接到MySQL一次并将此连接传递给所有这些。
如果并行运行下标,那么它取决于您的MySQL库是否是线程安全的。如果是,那么您可以将一个连接传递给所有这些连接。但如果没有,那么每个脚本只能有一个连接。该信息应在其文档中提及。
如果您只需要并行运行某些脚本,而某些脚本可能需要等待一段时间,那么您可以准备几个连接池(大约10个)并一次只运行10个脚本。当一个脚本结束时,您将启动下一个并重新使用旧连接。
答案 1 :(得分:0)
您可以尝试连接池。我不确定这是否可以在PHP中以及是否有可用的框架。
如果它不可用您可以使用包含连接列表的Singleton类。如果空闲N秒,则让该类关闭。这意味着您的30个下标可以重用其他脚本未使用的连接。
答案 2 :(得分:0)
你试过mysqli_pconnect吗?你如何产生你的子流程?你不能在主进程中打开数据库连接并将其传递给子进程吗?您正在做什么的任何代码示例?