Intellect Board Pro
Система управления форумами
Объявление

30 ноября 2015 года выпущена окончательная версия Intellect Board 3.00! Перейти к скачиванию
Также доступен конвертор данных для IntB 2.22

Для получения новостей о новых версиях подписывайтесь на наши страницы ВКонтакте и в Twitter.

Привет, гость!

Вопросы по PHP

Пользователю _1_ в этой теме не оффтопить

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Страницы:
Распечатать
4X_Pro
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

0 +
26 сентября 2016, 15:30#21
Не очень понял... Если они сразу в дистрибутив с CMS будут включены, то да, без проблем. Если скачивать автоматически, то тоже можно сделать (при условии, что composer установлен на сервере или тупо организовать скачивание по списку URL в инсталляторе), но на мой взгляд, это лишнее усложненение проекта.

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 5 мая 2015, 11:37
Рейтинг пользователя: 0

0 +
26 сентября 2016, 16:05#22
4X_Pro написал(а):
Если они сразу в дистрибутив с CMS будут включены, то да, без проблем.

Композеру нужно Patch прописывать, для этого надо быть root-ом на сервере, а скрипт в папке сервера таких прав (прописывать) не имеет. Или я ошибаюсь?
4X_Pro написал(а):
Если скачивать автоматически, то тоже можно сделать (при условии, что composer установлен на сервере

Вот именно-если установлен.
4X_Pro написал(а):
или тупо организовать скачивание по списку URL в инсталляторе),

Думаю, без patch-это нереализуемо.
4X_Pro написал(а):
но на мой взгляд, это лишнее усложненение проекта.

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

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

4X_Pro
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

0 +
27 сентября 2016, 14:42#23
Самый простой вариант — это включать все необходимые библиотеки в архив с дистрибутивом скрипта сразу, и подключать их с помощью require/require_once, без всяких автоматических class loader. Тупо, примитивно, зато надежно и работать будет всегда, и никакой composer вообще не нужен.

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 5 мая 2015, 11:37
Рейтинг пользователя: 0

0 +
30 сентября 2016, 13:50. Редактировалось 1 раз, последний — 30 сентября 2016, 13:52#24
Понятно. А вот по сессиям. Зачем гостю сессия? Почему она даётся всем-и пользователям и гостям? Вернее, пользователю понятно, зачем даётся, а вот гостю...

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

4X_Pro
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

0 +
30 сентября 2016, 15:53#25
Иногда бывает нужно сохранить какие-то параметры и для незарегистрированных пользователей. Например, в Интернет-магазине это список товаров в корзине, в IntB 3.x туда сохраняются настройки отображения раздела (сортировка, число страниц), если пользователь поменяет их по сравнению с теми, что стоят по умолчанию.
Но вообще, хорошей практикой является создавать сессию для гостей только тогда, когда в ней возникает реальная необходимость. (Иначе при прохождении поискового робота создается куча файлов сессий, что может вызвать падение производительности, в 2.x, кстати, это была одна из основных причин тормозов).
То есть в начале кода вместо простого session_start() делать проверку такого вида:
session_name('my_php_sid');
if ($_REQUEST['my_php_sid']) session_start(); // загружаем данные сессии, если пользователь передал ее ID в явном виде в параметре
// тут идет выполняется какой-то код
// а тут возникает явная необходимость в сессии, например, пользователь залогинился или зарегистрировался
if (session_id()==false) session_start(); // проверка на session_id нужна на случай, если сессия уже была создана в начале скрипта
// и тут пишем данные в сессию


Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 5 мая 2015, 11:37
Рейтинг пользователя: 0

0 +
30 сентября 2016, 17:57. Редактировалось 2 раза, последний — 30 сентября 2016, 18:05#26
     4X_Pro написал(а):
То есть в начале кода вместо простого session_start() делать проверку такого вида:

Наводит на мысль, что нужно бы сделать графическую проверку типа "я не робот"(галочка), при наличии в юзер агенте слов MSiE и Faerfox, как признак, косвенно указывающий на браузер TOR. В дополнение к твоей проверке, плюс дописать условием, при отключенном javascript, редиректиреть-тех, у кого ТОР-на страницу 404,  тех у кого отключен джаваскрипт (боты)-на лёгкую версию сайта (без ссылок на профиль и тд.). И тем и другим сильно урезать права отображения сайта, не оставляя никаких полей для ввода, с всплывающим сообщением, зайти с другого браузера.

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 5 мая 2015, 11:37
Рейтинг пользователя: 0

0 +
5 февраля 2017, 18:16. Редактировалось 1 раз, последний — 5 февраля 2017, 18:18#27
4X_Pro,подскажи, хочу сделать своего паука (бота), который бы парсил определённые страницы в интернете, и выдергивал из них текст. Чтоб руководствовался не html-тегами, а исключительно кириллистический текст копировал.
Например, я задам найти на странице слово "Москва"
И вот, заходит бот на страницу, и видит 3 кириллистических строки:
1. Сегодня на Арбате наблюдались большие пробки.
2. На Москва-реке сошёл лёд.
3. Ожидается солнечная, ясная погода.
Как выдрать полностью вторую строку? Какая функция для этого нужна? И ещё вопрос-сколько символов, или кб, может "запомнить" одна переменная?

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

4X_Pro
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

0 +
9 февраля 2017, 22:40#28
Такие вещи делаются с помощью регулярных выражений, т.е. нужно смотреть в направлении функций preg_match, preg_match_all. Правда, регулярные выражения — это вообще большая тема, в которой можно чуть ли не всю жизнь совершенствоваться...
Получится что-то вроде такого:
$count = preg_match_all('|([а-яА-Я,\.!\?:;])+|us',$data,$matches); for ($i=0; $<$count; $i++) { if (strpos($matches[1][$i],'Москва')!==false) { // делаем что-то там. } }
Конструкция [а-яА-Я,\.!\?:;] означает "искать символы от а до я, от А до Я, а также запятую, точку и т.д. (если этого не указать, любой знак препинания будет считаться концом найденной строки). Плюс после нее — искать один или более символов. Скобки вокруг конструкции — запомнить найденное. Найденное запоминается в переменную $matches, которая является массивом, а номер элемента в массиве — это порядковый номер скобок (у нас скобки одни, поэтому номер 1, но в принципе, бывают регулярные выражения с несколькими скобками).
Разобранная строка полностью будет доступна в переменной $matches[1][$i] внутри этого цикла.
Длина переменной-строки в PHP достаточно велика (по-моему, то ли 2, то ли 4 Гб, точно не помню). Но если скрипт выполняется на Web-сервере, а не из командной строки, там еще есть ограничение по памяти на скрипт в целом, оно обычно бывает от 32 до 256 Мб.

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

ПнБ
Начинающий
Всего сообщений: 97
Зарегистрирован: 5 мая 2015, 11:37
Рейтинг пользователя: 0

0 +
10 февраля 2017, 08:02#29
4X_Pro написал(а):
Скобки вокруг конструкции — запомнить найденное.

Спасибо, не знал такого, долго б мозги ломал.
4X_Pro написал(а):
Длина переменной-строки в PHP достаточно велика (по-моему, то ли 2, то ли 4 Гб, точно не помню). Но если скрипт выполняется на Web-сервере, а не из командной строки, там еще есть ограничение по памяти на скрипт в целом, оно обычно бывает от 32 до 256 Мб.

Спасибо, мне это подходит, тем более планирую несколько раз перезаписывать переменную в ходе исполнения скрипта.
4X_Pro написал(а):
Конструкция [а-яА-Я,\.!\?:;] означает "искать символы от а до я, от А до Я, а также запятую, точку и т.д. (если этого не указать, любой знак препинания будет считаться концом найденной строки). Плюс после нее — искать один или более символов.

Вот тут у меня возникло пару вопросов:
-Как быть, если автор текста не поставит точку в конце строки? Просто напишет вышеупомянутый пример как стих, без точек в конце?
-Что делает переменная data, обьявленная в скрипте лиш единожды? Хотя, подозреваю, что такой синтакс записи, сейчас пишу с телефона, позже гляну на офф. сайте.
-Может ли кто-нибудь жаловаться, могут ли быть санкции, если мой бот будет "стартовать" свою работу из папки моего домена, моего сайта, так как других площадок (серверов)-не имею? Тоесть это будет паук, пасущийся на чужих сайтах, заход которого будет виден даже из Яндекс-метрики, будет видно, что он пришел с моего домена и сканирует...

Всё, что мне известно о PHP-меня научил 4X_Pro
Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

4X_Pro
Основатель проекта
Всего сообщений: 205
Зарегистрирован: 22 сен 2014, 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 4

0 +
10 февраля 2017, 12:20#30
ПнБ написал(а):
-Как быть, если автор текста не поставит точку в конце строки? Просто напишет вышеупомянутый пример как стих, без точек в конце?

Вообще, если символы указаны в квадратных скобках, это означает, что они могут идти в любом порядке. Вот если написать '|([а-яА-Я,!\?:;])+\.|us' это будет означать, что точка должна быть после кириллических символов или знаков препинания, и если ее там не будет, то регулярное выражение не сработает (т.е. в $matches данный кусок не запомнится и не обработается).
ПнБ написал(а):
Что делает переменная data, обьявленная в скрипте лиш единожды?

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

Зависит от поведения робота. Если он не будет делать по несколько десятков параллельных запросов, которые будут вызывать тормоза сервера, и будет соблюдать ограничения, прописанные в robots.txt, то формальных поводов для жалоб нет. Максимум что могут сделать — это запретить доступ к их сайту с вашего IP-адреса через .htaccess или firewall (я так кучу китайских ботов у себя перебанил на Типаче).

Критикуя — предлагай, предлагая — обосновывай!
Для тех, кто живет в Интернете — мой блог о Web-разработке.

Страницы:
Распечатать

У вас нет прав для отправки сообщений в эту тему.

0: Контрольная точка "Конец инициализации". Время выполнения: 0.001. Запросов: 8, время запроса: 0.001 (51.46)%. Памяти использовано: 513608 байтов

0: Контрольная точка "Фиксация действия пользователя выполнена". Время выполнения: 0.002. Запросов: 10, время запроса: 0.001 (54.99)%. Памяти использовано: 513936 байтов

0: Контрольная точка "Основное действие выполнено". Время выполнения: 0.007. Запросов: 17, время запроса: 0.003 (40.49)%. Памяти использовано: 734624 байтов

0: Контрольная точка "Вспомогательные действия выполнены". Время выполнения: 0.007. Запросов: 19, время запроса: 0.003 (40.73)%. Памяти использовано: 742320 байтов

0: Контрольная точка "После срабатывания шаблонизатора.". Время выполнения: 0.009. Памяти использовано: 1044160 байтов