如何在PHP中利用数据库对.dbf文件进行优化研究



我想知道你是否有一些关于在PHP中使用数据库的想法/建议。

这是我的问题,我必须在PHP中"翻译"Foxpro脚本,我使用数据库,因为我必须处理。dbf文件。问题是PHP执行脚本所需的时间,因为我没有找到更好的方法来翻译选择查询,而不是遍历整个文件以选择我需要的数据…

显然,我达到了PHP将脚本呈现给用户需要花费太多时间的点。我知道我可以通过修改PHP .ini文件等来给服务器更多的时间来执行PHP,但这不是一个解决方案,因为这个脚本稍后将被我正在开发的网站的几乎每个用户访问,所以如果它能尽可能快地渲染,那将是非常棒的…

那么,总结一下,我可以做些什么来获得更快的执行时间与PHP上的。dbf文件查询?如何在PHP中翻译Foxpro的SELECT查询?你是否建议我用PHP以外的语言编写这个脚本?

我给你一个我必须翻译的例子,这只是我必须翻译的一小部分,并且。dbf文件包含至少50,000行,每行至少10列:/

FUNCTION 
PARAMETERS n_pc_id, l_pc_euro, n_sf_id, l_contrat
PRIVATE tb_res, mwhere
DIMENSION tb_res[1]
STORE 0 TO tb_res
IF n_sf_id = 0
IF l_contrat
    mwhere = "lig_mo.lo_gar = 'T' AND mo.mo_sf_id != m.pa_sfd_id"
ELSE
    mwhere = "lig_mo.lo_gar != 'T' AND mo.mo_sf_id != m.pa_sfd_id"
ENDIF
ELSE
IF l_contrat
    mwhere = "lig_mo.lo_gar = 'T' AND mo.mo_sf_id = n_sf_id"
ELSE
    mwhere = "lig_mo.lo_gar != 'T' AND mo.mo_sf_id = n_sf_id"
ENDIF
ENDIF
SELECT SUM(lig_mo.lo_qte);
FROM mo, lig_mo;
WHERE mo.mo_id = lig_mo.lo_mo_id;
AND (lig_mo.lo_pc_id = n_pc_id;
AND &mwhere;
AND lig_mo.lo_mo_id != 99999999);
AND lig_mo.lo_type IN ('F','V','B');
INTO ARRAY tb_res
RETURN tb_res[1]

您肯定不希望以行为基础进行操作。我会看看从PHP访问DBF文件的讨论,然后您可以将上面的(可能是rushmore优化的)查询直接传递到其中,在将其更改为使用查询参数之后。

相关内容

  • 没有找到相关文章

最新更新