timeout — Как оптимизировать исследование файлов .dbf с помощью dbase в PHP?

Я хотел бы знать, есть ли у вас какие-либо идеи / предложения по использованию dbase в PHP.

Вот моя проблема, мне нужно «перевести» скрипт Foxpro в PHP, и я использую dbase, так как мне приходится иметь дело с файлами .DBF. Проблема в том, что PHP требует времени для выполнения скрипта, потому что я не нашел лучшего способа перевести запросы на выборку, чем перебирать весь файл, чтобы выбрать нужные мне данные …

И, очевидно, я дошел до того, что PHP отдает слишком много времени на рендеринг скрипта пользователю. Я знаю, что могу дать серверу больше времени для выполнения PHP, изменив файл php.ini и т. Д., Но это не решение, поскольку позже этот сценарий будет доступен почти каждому пользователю сайта, который я разрабатываю, так что если это может пойти как можно быстрее, чтобы сделать это было бы действительно здорово …

Итак, подведем итог: что я могу сделать, чтобы ускорить выполнение PHP-запросов к файлам .dbf? Как бы вы перевели запросы SELECT Foxpro в PHP? Вы рекомендуете мне сделать этот скрипт на другом языке, чем 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]

1

Решение

Вы определенно не хотите делать это на основе строки. Я бы посмотрел на это обсуждение доступ к файлам DBF из PHP, затем вы можете передать (предположительно, оптимизированный по Rushmore) запрос выше прямо в него, изменив его на использование параметров запроса.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]