Я хотел бы знать, есть ли у вас некоторые идеи/предложения об использовании dbase в PHP.
Здесь моя проблема, я должен "перевести" скрипт Foxpro в PHP, и я использую dbase, так как мне приходится иметь дело с файлами.DBF. Проблема заключается в времени, которое требуется для выполнения PHP скрипта, потому что я не нашел лучшего способа перевода выбранных запросов, а не итерации по всему файлу, чтобы выбрать нужные мне данные...
И, очевидно, я дошел до того, что для PHP-скрипта пользователю требуется слишком много времени. Я знаю, что я могу дать серверу больше времени для выполнения PHP, изменив файл php.ini и т.д., Но это не решение, так как этот скрипт позже будет доступен почти каждому пользователю сайта, который я разрабатываю, поэтому, если он может идти как можно быстрее, чтобы сделать это действительно здорово...
Итак, чтобы подвести итог, что я могу сделать, чтобы получить более быстрое время выполнения с PHP на.dbf файлах? Как бы вы перевели запросы Foxpro SELECT в 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]
Вы определенно не хотите, чтобы это делалось подряд. Я бы посмотрел на это обсуждение доступа к файлам DBF с PHP, тогда вы можете передать запрос (предположительно Рашмор-оптимизированный) прямо на него, изменив его для использования параметров запроса.