Каков масштаб проблемы циклической ссылки PHP, и я должен волноваться об этом?

Хммм, а как насчет этого? Просто понять: d

import re

def WordsInText(text, words):
    found = []
    for index, item in enumerate(words):
        if (re.search(f'{item}', text, re.IGNORECASE) is not None):
            found.append(item)
    return found
5
задан meouw 9 February 2009 в 21:55
поделиться

4 ответа

Детально:

  • Если мое дерево состоит только из нескольких узлов, скажите 25, действительно ли это - проблема?

Не, если Ваши узлы не являются настоящими монстрами.

  • Память будет освобождена в конце сценария, или я медленно создаю проблему для сервера?

Когда интерпретатор закрывается, вся память освобождена.

  • При каких обстоятельствах эта проблема будет иметь эффект во время выполнения сценария?

Я сомневаюсь, что у Вас будет что-либо для волнения о том, если у Вас не будет очень низких пределов памяти или очень больших динамических структур данных. Если у Вас будет 25 узлов, которые не создаются/освобождаются часто, то у Вас не будет проблемы.

  • Будет, вручную уничтожая ссылки, решают проблему, и я должен всегда делать это?

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

4
ответ дан 13 December 2019 в 19:37
поделиться

Учитывая природу большинства страниц PHP - то есть, процесс работает за веб-страницей и выброшен при завершении - я скорее сомневаюсь, что это - проблема. Я не видел проблем с циклическими ссылками прежде и использовал их без проблем. По моему опыту, Вы столкнетесь с большим количеством проблем с простым потреблением памяти, но PHP 5 смягчил это несколько путем отказывания от просто копирования объектов и массивов, если не сказали иначе.

2
ответ дан 13 December 2019 в 19:37
поделиться

PHP 5.3 будет включать функции обнаружения и разрушения циклической ссылки. Это - дополнительная установка, и это должно только использоваться, когда необходимый, потому что сборщик "мусора" получит удар производительности, но это - адаптация, сделанная для Вашего примера.

Разработайте теперь, примите меру предосторожности для явного разыменования в __, разрушают () метод и обновляют до 5,3, если это возможно.

2
ответ дан 13 December 2019 в 19:37
поделиться

Возможно, так, но так как это выводит все объекты в конце каждого запроса (если Вы не кэшируетесь), я не думаю, что многие PHP программисты волнуются об этом.

Если Вы пишете сценарии командной строки в PHP, то, возможно, у Вас есть случай для волнения по поводу этого, но необходимо было бы писать некоторый довольно замысловатый код PHP, прежде чем это станет чем-то стоящим вызвать беспокойство о. И если это так у Вас есть большие проблемы.

Удачи.

3
ответ дан 13 December 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: