Каково различие между чтением () и освобожденный ()?

Вы можете добавить пользовательские поля поиска в ModelAdmin через getSearchContext() и настроить запрос на основе их с помощью getList(). См. в этом разделе документации SilverStripe.

Вот пример исключения результатов, у которых значение CreatedAt ниже даты, указанной в поле поиска (при условии, что ваш ModelAdmin управляет только MemberBonus):

getFields()->push(new DatetimeField('q[CreatedAfter]', 'Created After'));

        return $context;
    }

    public function getList() 
    {
        $list = parent::getList();

        $params = $this->getRequest()->requestVar('q');

        if (!empty($params['CreatedAfter'])) {
            $list = $list->exclude('CreatedAt:LessThan', $params['CreatedAfter']);
        }

        return $list;
    }
}

Чтобы получить работающий диапазон, достаточно нужно добавить поле CreatedBefore и фильтр.

48
задан AIB 28 May 2011 в 08:14
поделиться

4 ответа

read() низкий уровень, освободил буфер чтение. Это делает запрос целевой системы к UNIX.

fread() часть библиотеки C и обеспечивает буферизованные чтения. Это обычно реализуется путем вызова read() для заполнения его буфера.

56
ответ дан Francesco Boi 26 November 2019 в 18:38
поделиться

Семья read()-> open, close, read, write
семья fread()-> fopen, fclose, fread, fwrite

чтение семьи:

  • системные вызовы
  • , не отформатированы IO: у нас есть не отформатированный поток байтов

, семья освободила

  • , функции стандартной библиотеки для C (libc)
  • , используют внутренний буфер
  • , отформатированы IO (с "%.." параметр) для некоторых из них
  • использование всегда кэш-буфер Linux
[еще 1123] детали здесь , хотя примечание, что это сообщение содержит некоторую неправильную информацию.

36
ответ дан Francesco Boi 26 November 2019 в 18:38
поделиться

read syscall, тогда как fread функция в стандартной библиотеке C.

8
ответ дан phihag 26 November 2019 в 18:38
поделиться

Поскольку я помню это read(), API уровня не делают буферизации - поэтому, если Вы read() 1 байт за один раз у Вас будет огромный штраф перфекта по сравнению с выполнением того же самого с fread(). fread() вытянет блок и скупо выдаст его, как Вы просите его. read() спадет до ядра для каждого вызова.

7
ответ дан Francesco Boi 26 November 2019 в 18:38
поделиться
Другие вопросы по тегам:

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