Как использовать php для хранения и отображения входных данных любого посетителя - PullRequest
0 голосов
/ 27 ноября 2011

Я хочу создать очень простой сайт, но, к сожалению, мои php-навыки слабы. По сути, когда появляется пользователь, я хочу иметь страницу с текстом и мигающим курсором (я, вероятно, могу сам определить часть курсора, но не стесняйтесь предлагать). Когда пользователь вводит текст, я хочу, чтобы он отображал текст по мере его ввода, а когда он нажимает клавишу ввода (или щелкает что-то / что угодно), только что введенный текст будет отправлен в базу данных, а затем страница обновится этим новым текстом, чтобы кто-нибудь еще увидел. Курсор будет мигать на следующей строке вниз. В общем, это похоже на действительно простую вики, где каждый может добавить что угодно, но никто не может удалить то, что было напечатано ранее. Нет входа или что-нибудь. Может кто-нибудь предложить лучший способ пойти по этому поводу? Я предполагаю, что для отображения начальной страницы потребуется вызов php в базу данных, затем еще один запрос php для отправки данных, а затем еще один запрос php для отображения новой страницы. Я просто не знаю деталей. Большое спасибо!

Бонусный вопрос 1: Как можно динамически обновлять страницу, поэтому, если A отправляет текст, пока B печатает, B сразу видит текст A, отправленный на страницу B?

Дополнительный вопрос 2. Какие проблемы могут возникнуть, если эта база данных станет очень большой (скажем, миллионы слов), и как я могу решить их заранее? При необходимости я мог бы показать только небольшую часть (только текстовой) базы данных на любой данной странице, а затем выполнить пагинацию.

1 Ответ

0 голосов
/ 27 ноября 2011

Если у вас есть только одна страница, вам не нужна база данных. Все, что вам нужно сделать, это сохранить текстовый файл на сервере (используйте fopen() и связанные с ним функции), к которому только добавляется. Если у вас несколько страниц, то просто id (INTEGER), filetext (LARGEBLOB). (Примечание largeblob имеет ограничение 2 ^ 32 байта ).

Для части браузера пользователя вам потребуется использовать Javascript и AJAX, чтобы сообщать серверу о любых обновлениях. Просто свяжитесь с PHP-скриптом, который (1) принимает ввод и (2) добавляет его в файл.

Бонусный вопрос 1: Как можно динамически обновлять страницу, поэтому, если A отправляет текст, пока B печатает, B сразу видит текст A, отправленный на страницу B?

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

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

В значительной степени. Но отправляйте только последние 50 строк файла, когда его посещает браузер. Вы не хотите завершать работу браузера.

Бонусный вопрос 2. Какие проблемы могут возникнуть, если эта база данных станет очень большой (скажем, миллионы слов), и как я могу решить их заранее? При необходимости я мог бы показать только небольшую часть (только текстовой) базы данных на любой данной странице, а затем выполнить пагинацию.

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

...