我有一些非常大的数据文件,出于商业原因,我必须进行大量的字符串操作(替换字符和字符串).这是不可避免的.替换的数量达到数十万.
这比我想要的时间更长.PHP通常非常快,但我正在做这么多的字符串操作,它正在减慢并且脚本执行运行到几分钟.这很痛苦,因为脚本经常运行.
我做了一些测试,发现str_replace最快,接着是strstr,然后是preg_replace.我还尝试了单独的str_replace语句以及构建模式和替换的数组.
我正在研究隔离字符串操作操作和用不同语言编写的想法,但我不想在该选项上投入时间,只是发现改进可以忽略不计.另外,我只知道Perl,PHP和COBOL,所以对于任何其他语言我都必须先学习它.
我想知道其他人是如何处理类似问题的?
我搜索过,我不相信这会重复任何现有的问题.
我在Windows 8上遇到Apache/PHP问题.我以前一直在XP(以及MySQL)上使用它们没有问题.我从未使用过Windows 7.
Apache安装没有问题.一切正常,包括我的所有虚拟服务器.PHP安装正常,安装将条目放入httpd.conf而不会出错.但是,当我在安装PHP后尝试加载Apache时,Apache将无法加载.
当PHP条目包含在httpd.conf中时,我对Apache返回的错误感到困惑:
Syntax error on line 1029 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf:
Cannot load C:/Program Files/PHP/php5apache2_2.dll into server: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
这些线是:
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:\Program Files\PHP\"
LoadModule php5_module "C:\Program Files\PHP\php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
Run Code Online (Sandbox Code Playgroud)
(第1029行是LoadModule行).dll的位置绝对正确.该行的语法由PHP插入.我已经将语法与我拥有的httpd.conf的早期版本进行了比较,看起来是正确的.我认为语法错误是一个红色的鲱鱼.
我试过了:
注释掉PHP行和Apache加载很好.如果我注释掉LoadModule行并且只是离开PHPIniDir行,它仍然会失败.Apache似乎表现得好像无法看到PHP目录,但我找不到原因.
Windows事件日志中没有任何内容.最新版本的PHP和Apache.我有点不知道接下来要尝试什么.有什么建议吗?
我正在更新我的脚本以从 ext/mysql 移动到 ext/mysqli。它引入了一些问题。
\n\n在 ext/mysqli 下,脚本终止时不会释放连接。
\n\n这些脚本都是从命令行运行的。没有 Apache 或其他 HTTP 参与。
\n\n由于业务原因,我有时需要进行大量的单数据库交互。它们不是同时活动的,每个操作(INSERT、UPDATE、SELECT、DELETE)在下一个操作开始之前完成。\n在某些情况下,我能够构建大型单个查询(例如 UPDATE...SET... CASE...WHEN 等),当然,这些都不是问题,因为它们使用较少的连接,但有时我无法使用此选项。
\n\n我$mysqli->close()在每次数据库操作后都有一个,但(TCP)连接不会关闭。脚本终止后,连接将保持打开状态,直到超时(如 \xe2\x80\x9cnetstat -an\xe2\x80\x9d 所示)。
对我来说,实际意义是我的 TCP 连接已经用完。
\n\n这些脚本与 ext/mysql 完美配合。
\n\n之前已将此报告为错误 ( http://bugs.mysql.com/bug.php?id=38107 ),但解决方案是升级到 PHP 5.3。我正在使用 5.3.8。
\n\n例子:
\n\n$mysqli = new mysqli(DB_SERVER, DB_SERVER_USERNAME,DB_SERVER_PASSWORD, DB_DATABASE) or die ("Unable to connect: " . $mysqli->error());\n$result = $mysqli->query($query) or die ("Query failed: " . $mysqli->error . " Actual query: " . $query);\n// Do domething interesting with $result\n$mysqli->close();\n/** …Run Code Online (Sandbox Code Playgroud)