Существуют ли ограничения по длине запроса PHPSpreadsheet? - PullRequest
0 голосов
/ 19 сентября 2019

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

Сначала я создал скрипт с нуля, как и все остальные, а затем оставил его на ночь, чтобы запустить, но время работы скрипта истекло по истечении длительного времени, как с настройками PHP / Mysql, которые у меня есть.

Затем я попытался запустить один из моих существующих сценариев, и он работал отлично, как и раньше.

Наконец, я скопировал сценарий из одного из других отчетов в текущий сценарий и протестировал его.Это не шаблонная ошибка, и она тоже работает, как и ожидалось.

Я также выполнил только запрос в рабочей среде MySQL, и запрос вернул результаты менее чем за 10 секунд.

SQLFiddle: http://sqlfiddle.com/#!9/3c754eb/1

Я добавил свой запрос и удалил вложенные таблицы только для просмотра самого запроса.

SELECT 
    CALLING.StoreCode       AS  'STORE CODE'
,   CALLING.RouteCode           AS  'ROUTE CODE'
,   CALLING.ScheduledActionDate AS  'SCHEDULED ACTION DATE'
,   CALLING.ActualVisitedDate   AS  'ACTUAL VISIT DATE'
,   CALLING.CycleEndDate        AS  'CYCLE END DATE'
,   CALLING.CallingDay      AS  'CALLING DAY'
,   CASE 
        WHEN OUTEXCLUSIONS.ExcludedDate IS NOT NULL THEN 0
        WHEN EXCLUSIONS.ExcludedDate IS NOT NULL THEN 0 
        ELSE 1
    END             AS  'OUTLET CALLING STATUS' 
,   CALLING.UserName        AS  'USERNAME'
,   CALLING.Week            AS  'WEEK'
,   CASE 
    WHEN OUTEXCLUSIONS.ExcludedDate IS NOT NULL THEN OUTEXCLUSIONS.ExcludedDate
    WHEN EXCLUSIONS.ExcludedDate IS NOT NULL THEN EXCLUSIONS.ExcludedDate 
        ELSE NULL
    END             AS  'EXCLUSION DATE'

,   CASE 
    WHEN OUTEXCLUSIONS.ExcludedDate IS NOT NULL THEN OUTEXCLUSIONS.LeaveDescription
    WHEN EXCLUSIONS.ExcludedDate IS NOT NULL THEN EXCLUSIONS.LeaveDescription 
        ELSE NULL
    END             AS  'EXCLUSION DESCRIPTION'

FROM 

(SELECT 
    CALLCYCLES.StoreCode
,   CALLCYCLES.ScheduledActionDate
,   VISTED.ActualVisitedDate
,   CALLCYCLES.CycleEndDate
,   CALLCYCLES.CallingDay
,   VISTED.UserName
,   CALLCYCLES.RouteCode
,   CALLCYCLES.Week
,   CALLCYCLES.Requestable
FROM
    (
    NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
    )   AS CALLCYCLES
LEFT JOIN
    (
    NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
    )   VISTED
ON
    CALLCYCLES.StoreCode = VISTED.StoreCode
AND CALLCYCLES.CycleEndDate = VISTED.CycleEndDate

UNION ALL (UNIONING THE TWO NESTED QUERIES)

SELECT
    CALLCYCLES.StoreCode
,   CALLCYCLES.ScheduledActionDate
,   VISTED.ActualVisitedDate
,   CALLCYCLES.CycleEndDate
,   CALLCYCLES.CallingDay
,   VISTED.UserName
,   CALLCYCLES.RouteCode
,   CALLCYCLES.Week
,   CALLCYCLES.Requestable
FROM
    (
    NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
    )   AS CALLCYCLES
RIGHT JOIN
    (
    NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
    )   AS VISTED
ON
    CALLCYCLES.StoreCode = VISTED.StoreCode
AND CALLCYCLES.CycleEndDate = VISTED.CycleEndDate
WHERE CALLCYCLES.StoreCode IS NULL

)       AS CALLING

LEFT JOIN

    (JOINING TO REFERENCE TABLE 1)      AS EXCLUSIONS
ON
    CALLING.RouteCode = EXCLUSIONS.RouteCode
AND CALLING.ScheduledActionDate = EXCLUSIONS.ExcludedDate


LEFT JOIN

    (JOINING TO REFERENCE TABLE 2)      AS OUTEXCLUSIONS
ON
    CALLING.RouteCode = OUTEXCLUSIONS.RouteCode
AND CALLING.ScheduledActionDate = OUTEXCLUSIONS.ExcludedDate
AND CALLING.StoreCode = OUTEXCLUSIONS.StoreCode

К сожалению, кода ошибки нет, за исключением времени ожидания и того, что сценарий продолжает работать до истечения времени ожидания.

...