PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (21): « 1 2 3 4 [5] 6 7 8 9 ... » В конец

> Найдено сообщений: 305
nkl Отправлено: 17 Сентября, 2014 - 09:58:01 • Тема: Ищем PHP разработчика • Форум: FreeLance

Ответов: 10
Просмотров: 2837
Panoptik пишет:

шо? опять?

А шо липа какая-то?
nkl Отправлено: 17 Сентября, 2014 - 09:52:19 • Тема: Защита админки • Форум: Вопросы новичков

Ответов: 15
Просмотров: 1074
livote пишет:
Есть ли у кого хороший скрипт защиты админки на сайте, ну или рабочие идеи?

Я применяю 2 уровня, сначала урл админки защищаю при помощи basic http authentication, а потом уже и сам скрипт просит авторизоваться. Улыбка
nkl Отправлено: 08 Сентября, 2014 - 10:40:31 • Тема: Перестановки алфавита без рекурсии. Без массивов. PHP • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 2651
Это для чего вообще? Не понял
nkl Отправлено: 05 Сентября, 2014 - 10:25:45 • Тема: Помогите выпилить весь JS из html файла • Форум: Регулярные выражения

Ответов: 3
Просмотров: 251
Спасибо большое за ответы, но вроде как сам разобрался после того как нашел тут про эту самую "жадность". В общем у меня вот так заработало:
PHP:
скопировать код в буфер обмена
  1. preg_replace("/(<script(.*?)<\/script>)/s", "<!--test-->", $input_lines);

(Добавление)
Мелкий, твоя тоже работает. Спасибо!
(Добавление)
Tyoma5891, не strip_tags() не пойдет, мне же не весь html почикать нужно, а только удалить гребаный кулхацкерный js, который рекламой всю страницу залепляет.
nkl Отправлено: 05 Сентября, 2014 - 09:30:25 • Тема: Помогите выпилить весь JS из html файла • Форум: Регулярные выражения

Ответов: 3
Просмотров: 251
почему-то такое выражение:
PHP:
скопировать код в буфер обмена
  1. preg_replace("/<script(.*)<\/script>/s", "<!--test-->", $input_lines);

выпиливает абсолютно все, начиная с первого попавшегося тега <script>.

Я вообще не силен в регулярках и думаю тут явно где-то ошибся.
nkl Отправлено: 05 Сентября, 2014 - 09:09:47 • Тема: Не работает отрицание для группы директивы RedirectMatch (в Apache) • Форум: Регулярные выражения

Ответов: 2
Просмотров: 460
А использование Apach принципиально из-за того, что только он доступен на хостинге или есть вариант поставить nginx в качестве основго веб-сервера?

Просто я совсем запамятовал как это делается в апче, но как в nginx помню, приблизительно так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. location ~ ^/(?:one|two|three) {
  2.       rewrite ^/(?:one|two|three) new.site.com;
  3. }
nkl Отправлено: 05 Сентября, 2014 - 08:58:18 • Тема: php mysql • Форум: Работа с СУБД

Ответов: 19
Просмотров: 2607
Думаю так было бы правильнее:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <html>
  2.  
  3. <head>
  4.  
  5. </head>
  6. <body>
  7.  
  8. <form method="post">
  9. firstname: <input type="text" name="firstname"/>
  10. lastname: <input type="text" name="lastname"/>
  11. keywords: <input type="text" name="keywords"/>
  12. <input type="submit" value="add"/>
  13. </form>
  14.  
  15. </body>
  16. </html>
  17. <?php
  18. $con=mysql_connect("localhost","root","");
  19. if (!$con) {
  20. die('Could not connect: ' . mysql_error());
  21. }
  22. $select_db = mysql_select_db("new_db")
  23. or die("Could not select database");
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. $firstname = {$_POST['firstname']};
  31. $lastname = {$_POST['lastname']};
  32. $keywords = {$_POST['keywords']};")
  33. mysql_query("INSERT INTO data_table (firstname, lastname, keywords) VALUES ('" . $firstname . "', '" . $lastname . "', '" . $keywords . "')");
  34. mysql_close($con);
  35. ?>

Чувствуешь разницу? Улыбка
nkl Отправлено: 04 Сентября, 2014 - 13:53:02 • Тема: Как растянуть по ширине? • Форум: HTML, Дизайн & CSS

Ответов: 2
Просмотров: 667
Тому диву, который справа стоит дай ширину 82%
nkl Отправлено: 03 Сентября, 2014 - 14:16:42 • Тема: Помогите оптимизировать таблицу • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 116
Пардоньте друзья! Все в порядке! Это оказывается мой клиент СУБД так тормозит, хотя я пользовался функцией профилировки запросов в нем. В частности клиент называется dbForge Studio fo MySQL, удобный и няшный, но тупит оказывается.

Сейчас проверил те же самые запросы через консоль и вуаля, запрос по УРЛу занимает 0,02 c., запрос по id 0,00 c., запрос по crc32 хэшу 0.00 c.

Сами полюбуйтесь:
mysql> SELECT * FROM ***.crawler WHERE id = 2145 LIMIT 1;
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| id | url | visit_date | html | crc32_hash |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| 2145 | http://site[dot]com/news/chempionat_[dot][dot][dot]/2014-03-22-8846 | 0000-00-00 00:00:00 | | 3191665859 |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
1 row in set (0,00 sec)

mysql> SELECT * FROM ***.crawler WHERE url = "http://site.com/news/chempionat_rossii_2013_14_22_j_tur_razogrev_22_03_2014/2014-03-22-8846" LIMIT 1;
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| id | url | visit_date | html | crc32_hash |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| 2145 | http://site[dot]com/news/chempionat_[dot][dot][dot]/2014-03-22-8846 | 0000-00-00 00:00:00 | | 3191665859 |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
1 row in set (0,02 sec)

mysql> SELECT * FROM ***.crawler WHERE crc32_hash = 3191665859 LIMIT 1;
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| id | url | visit_date | html | crc32_hash |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
| 2145 | http://site[dot]com/news/chempionat_[dot][dot][dot]/2014-03-22-8846 | 0000-00-00 00:00:00 | | 3191665859 |
+------+---------------------------------------------------------------------------------------------------+---------------------+------+------------+
1 row in set (0,00 sec)

отдельное спасибо пользователю tuareg, именно он посчитал странным столь долгую выборку по primary_key [b]id[/b].

Мораль сей басни такова, меряйте скорость выполнения запросов mysql непосредственно из консоли mysql, а не сторонним говнософтом расположенным на расстоянии в 4-5к км от сервера!.. Нахмурился
nkl Отправлено: 03 Сентября, 2014 - 10:51:24 • Тема: Помогите оптимизировать таблицу • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 116
Вот explain запроса:
id - 1
select_type - SIMPLE
table - crawler
type - const
possible_keys - UK_crawler_crc32_has
key - UK_crawler_crc32_has
key_len - 8
ref - const
rows - 1
Extra - null
P.S.
Если выбирать по id записи, скорость такая же, в среднем 0.8 с.
Вот как щас таблица выглядит:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE ***.crawler (
  2.   id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   url varchar(255) NOT NULL,
  4.   visit_date datetime NOT NULL,
  5.   html longtext NOT NULL,
  6.   crc32_hash bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  7.   PRIMARY KEY (id, url, crc32_hash),
  8.   INDEX IDX_crawler (crc32_hash, id, url, visit_date),
  9.   UNIQUE INDEX UK_crawler_crc32_hash (crc32_hash)
  10. )
  11. ENGINE = INNODB
  12. AUTO_INCREMENT = 10007
  13. AVG_ROW_LENGTH = 10026
  14. CHARACTER SET utf8
  15. COLLATE utf8_general_ci
  16. ROW_FORMAT = DYNAMIC;

(Добавление)
Кстати, LIMIT 1 чуть ускорил запрос, в среднем на 0,1с)) Ускоряем дальше)
nkl Отправлено: 03 Сентября, 2014 - 10:11:49 • Тема: Помогите оптимизировать таблицу • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 116
В общем, сделал еще 2 поля одно с md5, а другое с crc32 хэшами урлов, прироста в скорости никакой. Стал на хостера грешить, потому как ранее с ним не работал, дампанул базу на сервер digitalocean'a где все наши проекты крутятся, один хер, скорость выборки не изменилась, прямо печалька какая-то, скорость выборки:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM crawler WHERE md5_hash = "3536a09def9fe1026971f140c3a477b4"

Запрос открыт за 1,269c [0,532c выполнение, 0,737c выборка]

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM crawler WHERE crc32_hash = 3570964716

crc32 = Запрос открыт за 1,254c [0,385c выполнение, 0,869c выборка]

Кстати говоря, раньше быстрее было, пока еще 2 столбца не добавил, и спрашивал по текстовому полю:
Запрос открыт за 0,652[0,285 выполнение, 0,367 выполнение]

Мне бы добиться общего времени работы запроса хотя бы до 0,3 сек, было бы просто шоколадно, тогда страница отлетала бы в nginx за полсекунды, но увы и ах Огорчение

Может на sql.ru что подскажут...
nkl Отправлено: 02 Сентября, 2014 - 14:43:49 • Тема: Помогите оптимизировать таблицу • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 116
Да, url уникальный. Сейчас попробовал сделать его первичным ключом таблицы, один фиг, оно наоборот еще медленнее стало.
(Добавление)
Перевел таблицу в MYISAM, сделал полнотекстовый индекс для этого поля длиной 255 символов итог: никакого прироста в скорости выборки. Огорчение
nkl Отправлено: 02 Сентября, 2014 - 14:25:53 • Тема: Помогите оптимизировать таблицу • Форум: SQL и Архитектура БД

Ответов: 14
Просмотров: 116
Имеется таблица: id, url, html. В url хранятся урлы вида "http://site.com/news/bla-bla-bla/bla-bla/bla". А в столбце html соответвенно html код запрашиваемого урла. Сейчас в таблице чуть более 10 000 записей, и уже сейчас выборка типа SELECT * FROM crawler WHERE url = 'http://site.com/bla-bla/bla-bla/bla'; занимает пол секунды, а т.к. этот запрос происходит при получении любого url, в целом это влияет на загрузку любой страницы (не важно со старой версии сайта она или с новой). В итоге, имею почти секундную задержку до получения контента.

Пытался победить созданием такого индекса:
Спойлер (Отобразить)

но к каким либо заметным результатам это не привело. Что я делаю не так и как мне ускорить выборку по текстовому полю такой длинны какую обычно имеют современные модные многоуровневые ЧПУ УРЛы?
Заранее спасибо за идеи! Улыбка
nkl Отправлено: 23 Июня, 2014 - 01:25:25 • Тема: JSON POST via cURL • Форум: Если скрипт не работает

Ответов: 0
Просмотров: 4413
Стоит задача получения определенной инфы от определенного сервера посредством отправки ему определенных параметров в формате json.

Для начала решил попробовать у себя, пишу:
PHP:
скопировать код в буфер обмена
  1.  
  2. $params = array(
  3.          'el1' => 123456789,
  4.          'el2' => 'aasdas asd asdasd',
  5.          'el3' => 'asd asdasd as',
  6.          'el4' => 987654321
  7. );
  8. $json = json_encode($params);
  9. $ch = curl_init(WEB_PATH . '/json_test/');
  10. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  11. curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
  12.     'Content-Type: application/json',                                                                                
  13.     'Content-Length: ' . strlen($json))                                                                      
  14. );
  15. curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  17.  

А вот собственно и сам файлик json_test.php который и получаю курлом:
PHP:
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4.         <head>
  5.                 <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  6.                 <title>Line</title>
  7.         </head>
  8.         <body>
  9.         <?PHP
  10.         var_dump($_POST);
  11.         ?>
  12.         </body>
  13. </html>
  14.  

В результате курл возвращает следующее:
Цитата:

cURL info:
array(26) {
["url"]=> string(45) "http://***.***.**/json_test/"
["content_type"]=> NULL
["http_code"]=> int(0)
["header_size"]=> int(0)
["request_size"]=> int(0)
["filetime"]=> int(0)
["ssl_verify_result"]=> int(0)
["redirect_count"]=> int(0)
["total_time"]=> float(0)
["namelookup_time"]=> float(0)
["connect_time"]=> float(0)
["pretransfer_time"]=> float(0)
["size_upload"]=> float(0)
["size_download"]=> float(0)
["speed_download"]=> float(0)
["speed_upload"]=> float(0)
["download_content_length"]=> float(-1)
["upload_content_length"]=> float(-1)
["starttransfer_time"]=> float(0)
["redirect_time"]=> float(0)
["redirect_url"]=> string(0) ""
["primary_ip"]=> string(0) ""
["certinfo"]=> array(0) { }
["primary_port"]=> int(0)
["local_ip"]=> string(0) ""
["local_port"]=> int(0)
}
Result:
string(178) "<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Line</title>
</head>
<body>
array(0) { }
</body>
</html>"

Если же обычную форму в этот файл послать, то все нормально работает и$_POST содержит то что ему послали. Видимо что-то в конфиге моего cURL не то, а вот что именно, не могу понять. Пересмотрел уже кучу примеров в инете, все одно и тоже, разные заголовки ставил, без толку. Что я делаю не так?
Разнесу!
(Добавление)
Oh yeah, baby!!! Я что-то получил, json посредством:

Кому интересно, читаем тут http://php.net/manual/ru/reserve...prawpostdata.php
Ха-ха
nkl Отправлено: 15 Июня, 2014 - 19:45:48 • Тема: Кто работал со sphinx, помогите разобраться • Форум: Хранение данных, их вывод и обработка

Ответов: 0
Просмотров: 1185
Доброго времени суток, господа.

Sphinx поставил, sphinxclient пекл подключил, работает на ура. Осталось только "поработать напильником" так сказать. Собственно в чем у меня возникает запара. Как мне построить индекс из нескольких таблиц, id в которых естественно совпадают. Сейчас мой конфиг выглядит след образом:

CODE (htmlphp):
скопировать код в буфер обмена
  1. source articles {
  2.         type = mysql
  3.         sql_host = localhost
  4.         sql_user = ***
  5.         sql_pass = ***
  6.         sql_db = ***
  7.         sql_port = 3306
  8.         sql_query_pre = SET NAMES utf8
  9.         sql_query = SELECT id, header, text, "article" AS type FROM articles_view
  10.         sql_attr_uint = id
  11.         sql_attr_uint = type
  12.         #sql_query_info = SELECT article_header FROM bs_articles WHERE article_id=$id
  13. }
  14.  
  15. source blogs {
  16.         type = mysql
  17.         sql_host = localhost
  18.         sql_user = ***
  19.         sql_pass = ***
  20.         sql_db = ***
  21.         sql_port = 3306
  22.         sql_query_pre = SET NAMES utf8
  23.         sql_query = SELECT id, header, text, "blog" AS type FROM bs_blog
  24.         sql_attr_uint = id
  25.         sql_attr_uint = type
  26. }
  27.  
  28. source books{
  29.         type = mysql
  30.         sql_host = localhost
  31.         sql_user = ***
  32.         sql_pass = ***
  33.         sql_db = ***
  34.         sql_port = 3306
  35.         sql_query_pre = SET NAMES utf8
  36.         sql_query = SELECT id, header, text, "book" AS type FROM bs_books
  37.         sql_attr_uint = id
  38.         sql_attr_uint = type
  39. }
  40.  
  41. index index {
  42.         source = articles
  43.         source = blogs
  44.         source = books
  45.         path = /var/lib/sphinxsearch/data/index
  46.         morphology = stem_ru
  47.         min_word_len = 1
  48.         charset_type = utf-8
  49. }
  50.  
  51. searchd {
  52.         listen = localhost:9306
  53.         log = /var/log/sphinxsearch/searchd.log
  54.         query_log = /var/log/sphinxsearch/query.log
  55.         pid_file = /var/run/sphinxsearch/searchd.pid
  56.         read_timeout = 5
  57.         max_children = 30
  58.         max_matches = 1000
  59.         seamless_rotate = 1
  60.         preopen_indexes = 0
  61.         unlink_old = 1
  62. }
  63.  

следующим кодом я получаю некий массив результата работы сфинкса:
PHP:
скопировать код в буфер обмена
  1. $cl = new SphinxClient;
  2. $cl->SetServer('localhost', 9306);
  3. $cl->SetMatchMode(SPH_MATCH_ANY);
  4. $cl->SetLimits(0, 10, 10);
  5. $cl->setMaxQueryTime(3);
  6.  
  7. $query_string = 'букмекерская контора';
  8. $result = $cl->query($query_string);
  9. /* START DEBUG */
  10. if (!IN_PRODUCTION) {
  11.         print '<xmp>';
  12.         var_dump($result);
  13.         print '</xmp>';
  14. }
  15. /* END DEBUG */

А вот собственно и результат работы:
Цитата:
array(10) { ["error"]=> string(0) "" ["warning"]=> string(0) "" ["status"]=> int(0) ["fields"]=> array(2) { [0]=> string(6) "header" [1]=> string(4) "text" } ["attrs"]=> array(0) { } ["matches"]=> array(20) { [2]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [5]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [6]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [7]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [8]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [9]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [10]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [11]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [12]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [14]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [15]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [16]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [17]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [18]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [21]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [22]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [401]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [403]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [460]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [652]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } } ["total"]=> int(100) ["total_found"]=> int(358) ["time"]=> float(0.004) ["words"]=> array(2) { ["букмекерск"]=> array(2) { ["docs"]=> int(312) ["hits"]=> int(547) } ["контор"]=> array(2) { ["docs"]=> int(354) ["hits"]=> int(660) } } }


Я так понимаю мне возвращаются айдишники найденных записей, но какой из них в какой таблице лежит? Как мне получить к этим айдишникам еще и данные или сфинкс занимается только ранжированием айдишников? Однако

Страниц (21): « 1 2 3 4 [5] 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB