- PHP: очистить экран (или установить пустой экран)
- Решение
- Другие решения
- Как очистить/удалить текущую строку в терминале?
- 12 ответов:
- PHP CLI, Windows 7 CMD и CLS/FF должны ладить. (Очистить Win7 CMD с PHP от CLI)
- Очистка файлов PHP сессии
- 9 ответов:
- Как очистить терминал Linux
- Команда clear
- Команда reset
- Сочетание клавиш Ctrl+L
- clear && clear
- printf «3c»
PHP: очистить экран (или установить пустой экран)
Как я могу «стереть» любые ранее отображенные элементы [браузера]? -Очистить экран полностью (установить пустой экран)?
Проблема, с которой я сталкиваюсь, заключается в следующем. Страница отображает часть HTML, но когда она достигает ключевых слов, она останавливается и повторяет то, что мне нужно (предполагаемое поведение, если на странице нет ключевых слов).
Тем не менее, поскольку он не очищает экран и DOM … в результате экран браузера пуст без каких-либо сообщений об ошибках. Это потому, что мне нужно стереть любой ранее отраженный вывод.
Я попробовал ob_end_clean () перед публикацией этого вопроса. Но это не работает:
PHP:
На стороне HTML я использую . content=» »/> , Если на странице нет ключевых слов, это вывод (без очистки браузера):
HTML
В результате на экране ничего не отображается без сообщения об ошибке.
Решение
Выходные буферы являются наращиваемыми, то есть вы можете вызывать ob_start (), пока активна другая ob_start (). Просто убедитесь, что вы вызываете ob_end_flush () соответствующее количество раз. Если несколько функций обратного вызова вывода активны, выходные данные фильтруются последовательно через каждую из них в порядке вложенности.
Выходной буфер должен быть запущен ob_start () с PHP_OUTPUT_HANDLER_CLEANABLE флаг. В противном случае ob_clean () не будет работать.
Управляет возможностью очистки выходного буфера, созданного ob_start ().
Ты уверен что ты Можно начало / сброс / конец выходного буфера?
Вы проверили конфигурацию вашего сервера?
Вы уверены, что не происходит стек выходного буфера?
Другие решения
Вы можете получить помощь от выходной контроль
ключевые функции: ob_start , ob_clean , ob_end_flush
попробуйте код ниже
Есть ли причина, по которой вы не можете сделать следующее? Вы не должны выводить, пока не знаете, что хотите напечатать / echo
Вы используете «выход» очень плохо:
http://php.net/exit
Exit завершит выполнение вашего скрипта, и я полагаю, что это не то поведение, которое вы ожидаете от него. Таким образом, ваш код не работает так, как вы могли ожидать, когда в документе нет ключевых слов:
Вы должны использовать «return» или другой способ выйти из «run», но не заканчивая выполнение скрипта PHP!
Например (оставив этот текст внутри тега ключевых слов):
Пример (не оставляя текста):
Этот текст можно использовать для предупреждения вызывающего абонента об этой проблеме, но в вашем коде он будет молча оставлять тэг ключевых слов пустым и при этом запускать оставшуюся часть сценария PHP.
С наилучшими пожеланиями.
Поскольку я понимаю вашу потребность, на самом деле вы не хотите очищать экран, а видите сообщение об ошибке в своем браузере, не глядя на исходный код. И это невозможно, потому что вы уже открыли теги.
Попробуйте это вместо вашего кода выхода:
Вы должны закрыть свой метатег, заголовок и запустить тег body.
Вы не можете уменьшить выход. Обычно сервер отправляет каждый вывод одновременно. Таким образом, отпечаток или эхо не может быть отменено. Но вы можете буферизовать вывод, начав весь код с ob_start ();
В конце вашего кода вы можете отправить свой буфер клиенту с ob_end_flush ();
Для вывода сведений об ошибке вы можете использовать пользовательскую функцию, например:
Это сделает ваш трюк.
НО
Будет гораздо лучше собрать всю информацию в вашу мета-версию, даже не отправляя html. Это приведет к более быстрой отправке клиенту. Вы просто выводите метас, если вся информация ясна:
Это часто используется в cms’ах, которые загружают пользовательские плагины. Люди, как правило, добавляют начальный ввод в конце файла или пробел / ввод перед первым тэг, поэтому движок обычно открывает обработчик ob, а затем после того, как все было загружено (и до того, как шаблоны используются для вывода — он очищает буфер от всех ошибок, вводит и так далее).
Как очистить/удалить текущую строку в терминале?
Если я использую терминал и набираю строку текста для команды, есть ли горячая клавиша или какой-либо способ очистить/удалить эту строку?
например, если моя текущая строка / команда-это что-то действительно длинное, как:
есть ли горячая клавиша или команда, чтобы перейти от выше:
обычно я нажимаю ↓ ключ, и если моя текущая строка является совершенно новой в истории, это очистит ее. Но если я пойду через мою историю команд через ↑ нажмите и начните редактировать или использовать эти команды, ↓ изменит только приглашение на следующую новейшую команду в истории, поэтому она не работает здесь, Если я не нажму ↓ несколько раз.
12 ответов:
можно использовать Ctrl + U чтобы прояснить до начала.
можно использовать Ctrl + W чтобы удалить только слово.
вы также можете использовать Ctrl + C отменить.
Если вы хотите сохранить историю, вы можете использовать Alt + Shift + # сделать это замечание.
просто чтобы суммировать все ответы
- очистить линию: вы можете использовать Ctrl + U чтобы прояснить до начала.
- очистить строку: Ctrl + A Ctrl + K стереть текущую строку в терминале
- отменить текущую команду/строку: Ctrl + C .
- вспомнить удаленную команду: Ctrl + Y (тогда Alt + Y )
- перейти в начале строки: Ctrl + A
- перейти в конце строки: Ctrl + E
- удалите передние слова, например, если вы находитесь в середине команды: Ctrl + K
- удалить символы слева до начала слова: Ctrl + W
- очистить вся командная строка: Ctrl + L
- переключение между началом строки и текущей позицией курсора: Ctrl + XX
У меня есть полный список ярлыков:
- Ctrl + a переместить курсор в начало строки
- Ctrl + e переместить курсор в конец строки
- Ctrl + b переместить назад один символ
- Alt + b Отодвинься на одно слово
- Ctrl + f шаг вперед характер
- Alt + f переместить вперед на одно слово
- Ctrl + d удалить текущий символ
- Ctrl + w вырезать последнее слово
- Ctrl + k вырезать все после курсора
- Alt + d вырезать слово после курсора
- Alt + w вырезать слово перед курсор
- Ctrl + y вставить последнюю удаленную команду
- Ctrl + _ отменить
- Ctrl + u вырезать все перед курсором
- Ctrl + x x переключение между первой и текущей позицией
- Ctrl + l очистить терминал
- Ctrl + c отменить команду
- Ctrl + r команда поиска в истории-введите поисковый запрос
- Ctrl + j завершить поиск в текущей записи истории
- Ctrl + g отменить поиск и восстановить исходную строку
- Ctrl + n следующая команда от История
- Ctrl + p предыдущая команда из истории
Ctrl + A , Ctrl + K для очистки текущей строки в терминале. Затем вы можете вспомнить его с Ctrl + Y Если вам нужно.
или если вы используете режим vi, нажмите Esc следовал по cc
чтобы вернуть то, что ты только что стер, Esc а то p 🙂
альтернатива Ctrl + A , Ctrl + K и Ctrl + E , Ctrl + U .
Я не уверен, если вы любите его, но я использую Ctrl + A (чтобы начать линию) и Ctrl + K (чтобы удалить строку) я был знаком с этими командами из emacs, и выяснил их случайно.
- Ctrl + u :движение до начала вашей линии в кольцевой буфер
- Ctrl + k :движение до конца вашей линии до кольцевого буфера
Ctrl + w :движение символы и (несколько) слова слева от курсора в кольцевой буфер
Ctrl + y : вставить последний вход из вашего кольцевого буфера, а затем вы можете использовать Alt + y для поворота через кольцевой буфер. Нажмите несколько раз, чтобы продолжить» предыдущую » запись в кольцевом буфере.
CTRL + R и начать вводить для поиска предыдущих команд в истории. Покажет полные строки.
CTRL + R снова в цикл.PHP CLI, Windows 7 CMD и CLS/FF должны ладить. (Очистить Win7 CMD с PHP от CLI)
Хорошо, теперь я искал везде, чтобы сделать это, и, видимо, никто в Интернете не знает, что случилось. И по интернету я имею в виду Google с его помощью.
Я пишу терминальное приложение в PHP для запуска в PHP CLI в командной строке Windows 7 (x64 Ultimate). В программе я хочу очистить экран. Данные, отображаемые на экране, могут представлять собой любое количество символов, охватывающих любое количество строк. Я не хочу никаких хакеров или инструкций по использованию возврата каретки. Я хочу очистить экран.
У CMD есть причудливая команда CLS, которая делает именно это. Итак, когда я запускаю строку PHP system(‘cls’); или любую вариацию выполнения команды clear screen (в том числе один ответ, который сказал, что используется system(«command /C cls»); , который не работал), терминал выводит символ venus. Девушка подписывает «перевернутую святую ручную гранату», как бы вы ее ни называли. Как оказалось, это, по-видимому, способ показать символ перевода строки (который, если терминал действительно вел себя так, как должен, очистит экран.)
Почему CLI в PHP думает, что показывая CMD девушке, она очистит экран и как я смогу получить CMD, чтобы действительно очистить? Я попытался отправить его символу перевода строки, отправив ему символ девушки, отправив ему чипы и куки и всевозможные приятные вещи. Ничего не получилось. Поэтому экран навсегда останется неясным, что вы можете себе представить, может быть раздражающим, когда вам нужно что-то перерисовать. В любом случае, ваша помощь приветствуется.
Очистка файлов PHP сессии
на моем сайте я использую PHP сессии. Информация о сеансе хранится в файлах в my ./ путь к сеансу. Через несколько месяцев я обнаружил, что эти файлы сессий не удаляются, сейчас есть 145.000 их в этот каталог.
как они должны быть очищены? Должен ли я делать это программно, или это параметр, который я могу использовать где-то, чтобы эта очистка происходила автоматически?
EDIT забыл упомянуть: этот сайт работает на поставщик, поэтому у меня нет доступа к командной строке. У меня есть ftp-доступ, но файлы сеанса принадлежат другому пользователю (тот, который работает на веб-сервере proces, я думаю) из первых ответов, которые я получил, я думаю, что это не просто настройка на сервере или PHP, поэтому я думаю, что мне придется реализовать что-то для него в PHP и периодически вызывать это из браузера (возможно, из задания cron, работающего на моей собственной машине дома)
9 ответов:
там вы найдете эти переменные:
- сессии.gc_probability
- сессии.gc_divisor
- сессии.gc_maxlifetime
они управляют вероятностью запуска сборщика мусора (GC) с каждым запросом страницы.
вы можете установить их с ini_set () в начале ваш сценарий или .htaccess файл, так что вы получите уверенность в какой-то степени они будут удалены когда-нибудь.
Debian /Ubuntu обрабатывает это с помощью cronjob, определенного в/etc / cron.d / php5
скрипт maxlifetime просто возвращает количество минут, которое сеанс должен поддерживать, проверяя php.ini, это выглядит так
в случае если кто-то хочет сделать это с cronjob, пожалуйста, имейте в виду, что это:
очень медленно, когда у вас много файлов.
рассмотрите возможность использования этого вместо:
если у вас есть пробелы в именах файлов, используйте это:
xargs заполнит командную строку с файлами, которые будут удалены, а затем запустите rm команда намного меньше, чем -exec rm <> \; , который будет вызывать для каждого файл.
просто мои два цента
используйте cron с find для удаления файлов старше заданного порога. Например, чтобы удалить файлы, которые не были доступны в течение по крайней мере недели.
вы можете создать скрипт / etc / cron.ежечасно / php и ставлю туда:
затем сделайте скрипт исполняемым (chmod +x).
теперь каждый час будут удаляться все файлы сеанса с данными, измененными более 24 минут назад.
Срыв: Только файлы:найти /var / lib/ php5 / — type f
Старше минуты: — cmin
Получить настройки php:$(echo «`php-I|grep-i сессия.gc_maxlifetime
Сделайте математику: / cut-d »- f3 ‘/ 60″ / bc)
РМ соответствующие файлы: — exec rm-f <> \;
Я думаю, что вы находитесь на общем сервере, и файлы сеанса смешиваются со всеми пользователями, поэтому вы не можете и не должны их удалять. То, что вы можете сделать, если вы беспокоитесь о масштабировании и/или конфиденциальности сеанса ваших пользователей, — это переместить сеансы в базу данных.
начните писать этот файл Cookie в базу данных, и у вас есть долгий путь к масштабированию вашего приложения на нескольких серверах, когда придет время.
кроме того, я бы не стал сильно беспокоиться 145.000 файлов.
1) просмотр сеансов старше 40 мин: find . -amin +40 -exec stat -c «%n %y» <> \;
2) удалить сеансы старше 40 мин: find . -amin +40 -exec rm <> \;
Как очистить терминал Linux
Иногда бывает нужно очистить окно терминала от текста, чтобы начать работу, так сказать, с чистого листа. Рассмотрим 5 различных способов очистить терминал.
Команда clear
Самая простая для запоминания команда — команда clear.
Команда clear очищает окно терминала. На самом деле вывод предыдущих команд в терминале никуда не удаляется, просто строка ввода команд перемещается на первую строку терминала, а под ней вы получаете чистое пространство. (См. ниже, как удалить предыдущий текст в терминале.)
Команда reset
Команда reset предназначена для того, чтобы вернуть терминал в первоначальное состояние.
Например, если после выполнения какой-нибудь программы вы пытаетесь ввести в терминале команду, а вводятся совсем не те символы, которые вы нажимаете. В таком случае команда reset восстановит исходное состояние терминала. Также после выполнения данной команды окно терминала очищается.
Сочетание клавиш Ctrl+L
Один из самых быстрых и простых способов очистить терминал — это нажать сочетание клавиш Ctrl+L .
Действие Ctrl+L аналогично выполнению команды clear.
clear && clear
Если выполнить команду clear один раз, то окно терминала будет очищено, но при этом, если до этого в нем было много текста, то можно использовать скролл и просмотреть этот текст. Если выполнить команду clear повторно, то предыдущий вывод в окне терминала будет очищен. Чтобы два раза не вводить clear, можно выполнить:
printf «\033c»
Если выполнить в терминале команду printf «\033c», то окно терминала очистится.
Код 033 (восьмеричная система счисления) соответствует ASCII коду Esc-последовательности. Ввод Esc-последовательности+c в терминале выполняет сброс настроек терминал в первоначальное состояние (подобно команде reset).