我继承了维护一个编码很差的电子商务网站的任务,我正在努力重构很多代码并尝试修复持续存在的错误.
每个数据库插入(将项目添加到购物车等)都以grab_new_id函数开始,该函数COUNT表中的行数,然后,从该数字开始,查询数据库以查找未使用的索引号.除了性能非常糟糕(已经有40,000多行,并且索引被定期删除,所以有时只需要几秒钟才能找到一个新的id)这会在两个操作同时执行时定期中断,因为添加了两个条目具有重复的ID号.
这对我来说似乎很愚蠢 - 为什么不在索引字段上使用自动增量?我已经对它进行了两种测试,并且在没有指定索引ID的情况下向表中添加行(显然)要快很多倍.我的问题是:任何人都可以想到原始程序员可能做到这一点的任何原因吗?是否有一些思想流派将auto_increment视为不良形式?是否有没有自动增量功能的数据库?
可能的重复:
PHP 能否检测它是从 cron 作业还是从命令行运行?
我正在尝试确定 PHP 命令行脚本上的 STDOUT 资源是否通过管道传输到另一个命令,以便适当地显示表格数据(如果输出直接到终端,则表格单元格看起来不错包裹在+-----+边框中;但如果尝试使用awk或 其他命令检查该数据,则不会。)
找到这个答案后,我尝试检查 STDOUT 资源stream_get_meta_data()以及我可以在 PHP 手册中找到的所有其他函数,这些函数对流进行操作,但在每种情况下,资源看起来都完全相同,无论它是否通过管道传输到另一个过程与否。
有没有办法在PHP中找到这个?