小编Sim*_*rts的帖子

PHP - 慢字符串操作

我有一些非常大的数据文件,出于商业原因,我必须进行大量的字符串操作(替换字符和字符串).这是不可避免的.替换的数量达到数十万.

这比我想要的时间更长.PHP通常非常快,但我正在做这么多的字符串操作,它正在减慢并且脚本执行运行到几分钟.这很痛苦,因为脚本经常运行.

我做了一些测试,发现str_replace最快,接着是strstr,然后是preg_replace.我还尝试了单独的str_replace语句以及构建模式和替换的数组.

我正在研究隔离字符串操作操作和用不同语言编写的想法,但我不想在该选项上投入时间,只是发现改进可以忽略不计.另外,我只知道Perl,PHP和COBOL,所以对于任何其他语言我都必须先学习它.

我想知道其他人是如何处理类似问题的?

我搜索过,我不相信这会重复任何现有的问题.

php string performance

11
推荐指数
1
解决办法
1421
查看次数

Windows 8上的Apache/PHP

我在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的早期版本进行了比较,看起来是正确的.我认为语法错误是一个红色的鲱鱼.

我试过了:

  • 在dll位置将反斜杠切换为斜杠.
  • 将PHP添加到路径中.
  • 在两个序列中安装Apache和PHP.
  • 检查PHP文件夹和各个文件的权限,以确保SYSTEM已读/执行.

注释掉PHP行和Apache加载很好.如果我注释掉LoadModule行并且只是离开PHPIniDir行,它仍然会失败.Apache似乎表现得好像无法看到PHP目录,但我找不到原因.

Windows事件日志中没有任何内容.最新版本的PHP和Apache.我有点不知道接下来要尝试什么.有什么建议吗?

php apache windows-8

4
推荐指数
1
解决办法
3万
查看次数

PHP Mysqli 不关闭 TCP 连接

我正在更新我的脚本以从 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 所示)。

\n\n

对我来说,实际意义是我的 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)

php connection mysqli tcp

1
推荐指数
1
解决办法
2626
查看次数

标签 统计

php ×3

apache ×1

connection ×1

mysqli ×1

performance ×1

string ×1

tcp ×1

windows-8 ×1