Принудительная остановка табуляции на скрытом элементе? Возможно?

Сайт находится здесь

Я выбрал использование радио-кнопки ' s метки как настраиваемые кнопки для них Это означает, что сами радиовходы отображаются: нет. Из-за этого браузеры не останавливаются на ярлыках радио, но я хочу, чтобы они это делали.

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

Я придумал просто поставить бессмысленный флажок прямо перед метками и установить его на ширину: 1px; и высотой 1px; который, кажется, действительно работает только в Chrome и Safari.

Так есть ли у вас какие-либо другие идеи принудительно использовать табуляцию в тех местах, не показывая элемент?

Редактировать:

Просто если кто-то другой придет, Вот как я смог вставить небольшие флажки в Chrome & Safari, используя JQuery:

if ($.browser.safari) {
    $("label[for='Unlimited']").parent().after('');
    $("label[for='cash']").parent().after('');
    $("label[for='Length12']").parent().after('');
}

Примечание: $ .browser.webkit не сбылось ... 134217728 байт исчерпаны (пытались выделить 1078799 байт) в D: \ xampplite \ HTDOCS \ Скребок \ PHPExcel \ чтения \ Excel2007.php on line 269

Мой лимит памяти PHP 128М быстро исчерпывается, даже когда я пытаюсь открыть небольшой файл Excel размером ~ 350 КБ с помощью PHPExcel.

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

24
задан Shubham 6 August 2016 в 05:16
поделиться

5 ответов

Размер файла не подходит для файлов книги при работе с PHPExcel. Количество строк и столбцов (т.е. ячеек) более важно.

Сам код PHPExcel занимает от 10 до 25 МБ, в зависимости от того, к каким компонентам осуществляется доступ.

В настоящее время каждая ячейка в книге занимает в среднем 1 КБ памяти (без какого-либо кэширования) или 1,6 КБ на 64-битном PHP - на данный момент я предполагаю, что 32-битный PHP - так (например) рабочий лист из 8000 строк с 31 столбцом (248000 ячеек) будет около 242 МБ. При кэшировании ячеек (например, php: // temp или DiskISAM) это можно уменьшить примерно до трети, поэтому для 8000 строк по 31 столбцу потребуется около 80 МБ.

Существует ряд вариантов, которые помогут вам уменьшить использование памяти:

Используете ли вы кеширование ячеек с PHPExcel?

require_once './Classes/PHPExcel.php';

$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( ' memoryCacheSize ' => '8MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load("test.xlsx");

Если вам нужен только доступ к данным на ваших листах, и вам не нужен доступ к форматирование ячеек, то вы можете отключить чтение информации о форматировании из книги:

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("test.xlsx");

Если вам нужен доступ только к некоторым, но не ко всем листам в книге, вы можете загрузить только эти листы:

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setLoadSheetsOnly( array("Worksheet1", "Worksheet2") );
$objPHPExcel = $objReader->load("test.xlsx");

если вы только Если вы хотите читать определенные ячейки на листах, вы можете добавить фильтр:

class MyReadFilter implements PHPExcel_Reader_IReadFilter
{
    public function readCell($column, $row, $worksheetName = '') {
        // Read title row and rows 20 - 30
        if ($row == 1 || ($row >= 20 && $row <= 30)) {
            return true;
        }

        return false;
    }
}

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadFilter( new MyReadFilter() );
$objPHPExcel = $objReader->load("test.xlsx");

Все эти методы могут значительно снизить требования к памяти.

59
ответ дан 28 November 2019 в 22:32
поделиться

Xdebug - это профилировщик / отладчик для php, который может помочь вам отследить использование памяти и функциональные вызовы, чтобы выяснить, в чем проблема. И его легко установить, в большинстве дистрибутивов Linux он есть в репозитории, «yum install xdebug», «apt-get install xdebug».

1
ответ дан 28 November 2019 в 22:32
поделиться

PHPExcel известен утечками памяти. Я советую вам использовать следующее, для чего требуется ДОЛЯ памяти, которую использует PHPExcel .:

1) Для чтения: PHP-Excel-Reader

2) Для записи: Pear Spreadsheet Excel Writer

4
ответ дан 28 November 2019 в 22:32
поделиться

Если вы хотите узнать, вы можете использовать xhprof . По этой ссылке с его помощью можно отслеживать использование памяти ...

1
ответ дан 28 November 2019 в 22:32
поделиться

Тот факт, что файл данных занимает всего X байт, не означает, что он использует X байт оперативной памяти. Например, только 4 КБ данных в массиве $_SESSION используют 64 КБ оперативной памяти при загрузке. Это просто зависит от того, что код делает с этими данными. Правильный ответ - увеличить объем оперативной памяти.

Кроме того, если это файл XLSX, это XML-документ в формате ZIP. Текстовые файлы сжимаются намного плотнее, чем 1/2, поэтому ваш файл XLSX размером 350 КБ легко превращается в файл Excel размером 1 МБ.

3
ответ дан 28 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

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