Вызов функции воспламенителя кода 404

Для эффективности с очень большими файлами (распространенный в ситуациях с файлом журнала, где можно хотеть использовать хвост), Вы обычно не хотите читать целый файл (даже если Вы действительно делаете это, не читая целый файл в память сразу), Однако, действительно необходимо так или иначе разработать смещение в строках, а не символах. Одна возможность читает назад с, ищут () символ символом, но это очень медленно. Вместо этого лучше для обработки в больших блоках.

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

import os, itertools

def rblocks(f, blocksize=4096):
    """Read file as series of blocks from end of file to start.

    The data itself is in normal order, only the order of the blocks is reversed.
    ie. "hello world" -> ["ld","wor", "lo ", "hel"]
    Note that the file must be opened in binary mode.
    """
    if 'b' not in f.mode.lower():
        raise Exception("File must be opened using binary mode.")
    size = os.stat(f.name).st_size
    fullblocks, lastblock = divmod(size, blocksize)

    # The first(end of file) block will be short, since this leaves 
    # the rest aligned on a blocksize boundary.  This may be more 
    # efficient than having the last (first in file) block be short
    f.seek(-lastblock,2)
    yield f.read(lastblock)

    for i in range(fullblocks-1,-1, -1):
        f.seek(i * blocksize)
        yield f.read(blocksize)

def tail(f, nlines):
    buf = ''
    result = []
    for block in rblocks(f):
        buf = block + buf
        lines = buf.splitlines()

        # Return all lines except the first (since may be partial)
        if lines:
            result.extend(lines[1:]) # First line may not be complete
            if(len(result) >= nlines):
                return result[-nlines:]

            buf = lines[0]

    return ([buf]+result)[-nlines:]


f=open('file_to_tail.txt','rb')
for line in tail(f, 20):
    print line

[Редактирование] Добавленная более определенная версия (избегает потребности инвертировать дважды)

7
задан tereško 9 February 2013 в 00:57
поделиться

5 ответов

если добавить? после index.php он работает?

http://example.com/index.php?/blog/comments
2
ответ дан 7 December 2019 в 10:04
поделиться

Проблема с обновлением файла.

0
ответ дан 7 December 2019 в 10:04
поделиться

По умолчанию, ваш пример должен работать. Изучите свои конфигурации и удалите .htaccess, поскольку в вашем примере mod_rewrite не используется.

Начать с нуля также поможет вам в обучении;)

1
ответ дан 7 December 2019 в 10:04
поделиться

У меня была такая же проблема. В итоге я не закрывал ни одной своей первой функции - я остановился на последней}. Так что функция, которую я не закрыл, работала нормально, но все, что происходило после этого, продолжало выдавать мне 404.

0
ответ дан 7 December 2019 в 10:04
поделиться

Всегда стоит попробовать некоторые из параметров $ config ['uri_protocol'] в application / config / config.php.

/*
|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of "AUTO" works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

Некоторые у серверов есть проблемы с разными параметрами, поэтому попробуйте каждый вручную. Возможно, это не сработает в вашем случае, но это спасло меня в прошлом.

1
ответ дан 7 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

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