Здесь возникла немного странная проблема. Недавно я начал заниматься обслуживанием веб-сайта, который я изначально не создавал. На сайте Drupal есть куча узлов с полем аудиофайла и проигрывателем jQuery, который их воспроизводит. На многих узлах проигрыватель не загружается, и я понял, что это связано с тем, что файл сообщается как 0 байт, когда я редактирую узел. Я не уверен, почему это так. Сначала я подумал, что это может быть связано с правами доступа к файлам, но я не думаю, что это так, поскольку разрешения выглядят нормально для меня. Чтобы исправить это, все, что мне нужно было сделать, это повторно загрузить файл. Проблема в том, что таких файлов сотни, и я хотел бы исправить это, сделав одно обновление, если это возможно.
Поле файла показывает, что мои ранее загруженные файлы имеют размер 0 байт.
16.07.2012
- Если вы посмотрите на записи в вашей таблице
file_managed
, правильно ли указаны размеры файлов? Интересно, может ли таблица быть повреждена. 17.07.2012 - Нет, в этой таблице они тоже 0 байт. 09.08.2012
- Еще одна странность заключается в том, что некоторые из этих 0-байтовых файлов будут воспроизводиться, а другие нет. Я не вижу разницы между файлами.. просто некоторые играют, а некоторые нет. Очень странно. 09.08.2012
- Изменяются ли размеры файлов на «0» при их редактировании или остаются «правильные» файлы? Возможно, что-то пошло не так, когда они впервые загрузили файлы. :( 22.08.2012
Ответы:
1
Вот рабочая версия псевдокода Терри для Drupal 7.
$fids = db_query('SELECT fid FROM {file_managed} WHERE filesize = 0')->fetchCol();
foreach(file_load_multiple($fids) as $file) {
// Get full path to file.
$target = drupal_realpath($file->uri);
// If the file does not exist try the next file.
if (!file_exists($target)) {
echo "File $file->uri does not exist." .PHP_EOL;
continue;
}
// Find and store size of file
$file->filesize = filesize($target);
// Size of file is
if ($file->filesize > 0) {
file_save($file);
}
else {
echo "Size of $file->uri is still zero." . PHP_EOL;
}
}
Запустите его с помощью drush:
drush php-script fix-file-sizes.php
22.10.2013
2
У нас была такая же проблема: много 0-байтовых файлов в базе данных. То, что мы сделали, выглядело примерно так:
function update_my_filesizes() {
$fileIDs = db_query('SELECT fid FROM {file_managed) WHERE filesize = 0')->fetchCol();
foreach(file_load_multiple($fids) as $file) {
// determine size of file
$filesize = SIZE_OF_THE_FILE; (pseudocode, we had to use filesize())
$file->filesize = $filesize;
if($file->filesize > 0) {
file_save($file);
} else {
echo "Filesize for file <filename here> is still 0 :(";
}
}
}
22.08.2012
Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..