PHP.SU

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

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

> Найдено сообщений: 285
Slavenin Отправлено: 28 Июля, 2014 - 11:08:50 • Тема: Ускорь свои сообщения с post-hawk • Форум: Наработки по собственным проектам

Ответов: 4
Просмотров: 3112
esterio пишет:
чтобы все ПМ ходили через сторонний сервис. нет уж я лучше сделаю NodeJS + sockets.io. А так вроде бы не плохо для сайтов на бесплатных хостингах


ну да, кому-то проще сделать всё самому, но далеко не у всех есть такая возможность или знания, ну и плюс:
Цитата:
Сервис не сохраняет ваши сообщения. Если вы боитесь за сохранность данных пользователей можете воспользоваться любой библиотекой шифрования
Slavenin Отправлено: 26 Июля, 2014 - 21:28:13 • Тема: Ускорь свои сообщения с post-hawk • Форум: Наработки по собственным проектам

Ответов: 4
Просмотров: 3112
Доброго времени суток! Хочу презентовать вам небольшой сервис по передаче личных сообщений.

Практический каждый web-разработчик, рано или поздно сталкивается с пожеланием типа: «Хочу сообщения, как в контакте». В каждом проекте, это означает что-то своё, но как правило, везде присутствует обмен сообщениями между пользователями в реальном времени. И тут начинается веселье…

Появляются на свет разного рода велосипеды и дорабатываются уже существующие, так как вероятность «взять и использовать» готовое решение в неизменном виде стремится к 0. Каждый использует разные подходы для решения этой задачи, кто-то commet-server, кто-то просто polling, ну а кто-то заморочится и напишет socket-сервер с подключением через WebSocket. Все эти варианты имеют право на существование, но на их реализацию тратится солидное время, так как ни один из них нельзя назвать простым.

Все это я проходил. В какой-то момент пришла мысль: «Сколько можно!?» — и я стал думать и подбирать инструменты. Проанализировав, то что удалось найти, для реализации серверной части остановился на Erlang/OTP, который идеально подходил для поставленной задачи. И работа закипела…

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

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

Теперь немного о конфиденциальности.

Сервис не сохраняет ваши сообщения. Если вы боитесь за сохранность данных пользователей можете воспользоваться любой библиотекой шифрования, как на клиенте (несколько библиотек), так и на сервере (например, mcrypt) в любом случае сервису ваши сообщения не нужны. Фиксируется только сам факт передачи для сбора статистики. Планируется доработать клиентскую библиотеку для поддержки шифрования «из коробки».

Сколько стоит?
Пока — бесплатно. Сервис находится в стадии бэты и каких-то ограничений не планируется.

Монетизация сервиса будет. Но, тут есть большое НО. Сервис не ставит задачу обогатить своих создателей. В какой-то момент я понял, зачем я это делаю и появилась еще одна цель — помочь, детям, которые в этом нуждаются. Откуда это пришло, сложно сказать, но с того момента, как я её перед собой поставил, процесс пошёл гораздо легче. Пока нет юр. лица, да и не известно нужно ли оно, на сайте есть скрипт для доната через Яндекс.Деньги и номера кошельков web money. Чуть позже сделаю страницу с отчётами о переведённых средствах (если будет о чём отчитываться).

Благодарю за внимание!
Надеюсь, получилось что-то полезное. Буду рад любой конструктивной критике и предложениям.
Slavenin Отправлено: 04 Декабря, 2012 - 13:49:07 • Тема: Не работает dot • Форум: Операционная система и системные вызовы

Ответов: 0
Просмотров: 1344
Всем привет!

Есть замечательный инструмент для профайлинга скриптов http://code[dot]google[dot]com/p/webgrind/ работает на основании файлов сформированных xdebug на сайте сказано, что он умеет строить граф вызовов функций. Но вот в самом функционале я этого не нашел. Погуглив нашел, что можно строить эти графики на основании все тех же файлов xdebug с помощью плагина питона gprof2dot.py. Если запускаю из конслоли, все прекрасно работает, запускаю из php первая часть, которая формирует файл работает, а вторая формирует изображение размером в 0 байт.

PHP:
скопировать код в буфер обмена
  1. shell_exec('/usr/bin/python /opt/lampp/htdocs/xampp/webgrind/library/gprof2dot.py -f callgrind /opt/lampp/tmp/xdebug.out.1354601940 -o /opt/lampp/htdocs/xampp/webgrind/library/graf');
  2. shell_exec('chmod 0777 /opt/lampp/htdocs/xampp/webgrind/library/graf');
  3.  
  4. shell_exec('/usr/bin/dot -Tpng -o /opt/lampp/htdocs/xampp/webgrind/library/graf.png /opt/lampp/htdocs/xampp/webgrind/library/graf');


в чем может быть проблема?
Slavenin Отправлено: 04 Октября, 2012 - 14:46:41 • Тема: Ajax & sockets • Форум: Работа с сетью

Ответов: 3
Просмотров: 2580
победа но из разряда "где мой бубен"... Проблема решается путем запуска сервера в отдельном потоке через stream_socket_client с отключенной блокировкой stream_set_blocking( $s, 0 ); в результате сервер запускается в отдельном потоке, скрипт не ждет ответа и удачно завершается, можно слать запросы...

вот бы еще кто-то просветил какого ... нужно серверу без этого шаманства
Slavenin Отправлено: 04 Октября, 2012 - 12:00:03 • Тема: Ajax & sockets • Форум: Работа с сетью

Ответов: 3
Просмотров: 2580
Всем доброго времени суток!
Написал на php сокет-сервер. Все здорово, все работает... При прямом обращении по нужным адресам.

Дальше начинается "уличная магия"... В том случае, если сервер уже запущен, когда я дергаю его ajax`ом все хорошо. Если же сервер не запущен, то я его запускаю и пробую снова чего-нибудь ему отправить. Он запускается(вижу в логах), но... и это самое странное, даже после принудительного завершения ajax-запроса(на запуск) второй(с сообщением до сервера не доходит)... тупо висит в сетевой активности, такое ощущение, что он встает в некую очередь и ждет завершения скрипта сервера, так как если сервак тормознуть, то запрос выполняется.

Помогите пожалуйста, второй день не могу понять, что происходит...

Сервер
Спойлер (Отобразить)


клиент

Спойлер (Отобразить)


js

Спойлер (Отобразить)
Slavenin Отправлено: 04 Сентября, 2012 - 22:28:30 • Тема: Переадрисация • Форум: Вопросы новичков

Ответов: 6
Просмотров: 389
PHP:
скопировать код в буфер обмена
  1. if(!$_SESSION['is_admin']===true)

сурово...
ну и логично, что срабатывает первый редирект, так как первый элемент массива $users всегда существует
Slavenin Отправлено: 04 Сентября, 2012 - 22:19:26 • Тема: Метод GET и его вывод в DIV без перезагрузки страницы • Форум: Вопросы новичков

Ответов: 4
Просмотров: 208
забавный вопрос...
Смотря что подразумевается по "вгружением" можно динамически аяксом
можно просто при формировании страницы
PHP:
скопировать код в буфер обмена
  1. if($_GET['val'])
  2. echo '<div>' . $_GET['val'] . '</div>';
  3. else
  4. echo 'фиг вам';
Slavenin Отправлено: 01 Сентября, 2012 - 15:14:39 • Тема: Асинхронность в php • Форум: HTTP и PHP

Ответов: 7
Просмотров: 3959
caballero пишет:
в PHP - никак

очень даже как!
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]itask/index[dot]html
но тут есть одно но, если у вас не настроен должным образом сервер и нет прав на управление потоками и процессами, то подходит только вариант с сокетами. Я реализовал себе класс, который у меня шлет записи из одной базы в другую в 20 потоков используя web-сервис. Но в принципе можно слать и делать что угодно
Slavenin Отправлено: 28 Августа, 2012 - 11:21:36 • Тема: Парсинг сайта почты России • Форум: Работа с сетью

Ответов: 5
Просмотров: 3854
мда, ничего такого они не изобрели, в ответ приходит форма из которой нужно взять ключ и отправить этот ключ обратно сайту... Ответ был на поверхности...
Slavenin Отправлено: 27 Августа, 2012 - 21:51:52 • Тема: Парсинг сайта почты России • Форум: Работа с сетью

Ответов: 5
Просмотров: 3854
Всем доброго времени суток!
Есть скрипт, который до недавнего времени прекрасно работал и парсил данные о стоимости доставки. НО настал тот самый "прекрасный момент" и на сайте почты изобрели что-то такое, что безошибочно определяет, что на сайт пришел робот... Полная имитация браузера пришедшего с основной страницы не помогает, ибо даже главная страница не открывается. Вместо кода со стоимостью возвращается волшебный код бесконечного редиректа:
CODE (html):
скопировать код в буфер обмена
  1. <html><head></head><body onload="document.myform.submit();"><form method="post" name="myform" style="visibility:hidden;"><input id="key" name="key" value="425908"/><input type="submit"/></form></body></html>


собственно сам скрипт (дошел до главной страницы пытаясь получить куки, но в ответе всегда редирект)
Да и еще ОЧЕНЬ ВАЖНЫЙ момент, если зайти на сайт почты через браузер, даже на главную страницу, то потом примерно минут пять десять, скрипт будет работать!!! Потом снова отвалиться. Дело тут не в куках ибо куки у меня пишутся в файл. Если смотреть после открытия страницы смотреть в файлах, то куки пишутся, как только скрипт отваливается, куки пропадают. Мой мозг расплавлен. Что еще можно сделать, чтобы получить страницу? Пробовал по всякому начиная от простого file_get_contents и сокетов, заканчивая курлом, на чем пока и остановился за неимением других идей... Очень надеюсь на вашу помощь...

PHP:
скопировать код в буфер обмена
  1. $url = 'http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost=36&countryCode=643&typePost=1&viewPostName=%D0%A6%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&countryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName=%D0%9D%D0%90%D0%97%D0%95%D0%9C%D0%9D.&weight=1320&value1=0&postOfficeId=170039');
  2. $get = '/autotarif/Autotarif.aspx?viewPost=36&countryCode=643&typePost=1&viewPostName=%D0%A6%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&countryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName=%D0%9D%D0%90%D0%97%D0%95%D0%9C%D0%9D.&weight=1320&value1=0&postOfficeId=170039');
  3. $agent   = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1";
  4.  
  5. $url2 = 'http://www.russianpost.ru/autotarif/Selautotarif.aspx';
  6. $url3 = 'http://www.russianpost.ru/';
  7.  
  8. $ref="http://www.russianpost.ru/autotarif/SelautotarifRus.aspx";
  9. $headers = array(
  10.                 'GET /autotarif/SelautotarifRus.aspx HTTP/1.1',
  11.                 'Host: www.russianpost.ru',
  12.                 'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
  13.                 'Accept-Language: ru,en;q=0.9',
  14.                 'Connection: Keep-Alive',
  15.                 'Referer: http://www.russianpost.ru/autotarif/SelautotarifRus.aspx',
  16.                 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1'
  17.                 );
  18.  
  19. file_put_contents('cookie.txt', '');
  20.  
  21. $ch = curl_init();
  22.         $headers[0] = 'GET / HTTP/1.1';
  23.         curl_setopt( $ch, CURLOPT_URL, $url3 );
  24.         curl_setopt( $ch, CURLOPT_HEADER, 1 );
  25.         curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
  26.         curl_setopt( $ch, CURLINFO_HEADER_OUT, 1);
  27.         curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
  28.         curl_setopt( $ch, CURLOPT_USERAGENT, $agent );
  29.         curl_setopt( $ch, CURLOPT_REFERER, $ref );
  30.         //curl_setopt( $ch, CURLOPT_COOKIESESSION, 1);
  31.         curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true);
  32.         curl_setopt( $ch, CURLOPT_ENCODING,'gzip,deflate');
  33.         curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0);
  34.         curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0);
  35.         curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  36.         curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  37.  
  38.         $html = curl_exec( $ch );
  39.         echo $html;
  40.         exit();
  41.  
  42.         curl_setopt( $ch, CURLOPT_URL, $url );
  43.         $headers[0] = 'GET /autotarif/Selautotarif.aspx HTTP/1.1';
  44.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  45.         curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  46.         curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  47.  
  48.         curl_setopt( $ch, CURLOPT_URL, $url );
  49.         $headers[0] = 'GET ' . $get . ' HTTP/1.1';
  50.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  51.         curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  52.         curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookie.txt');
  53.         //curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
  54.  
  55.         $html = curl_exec( $ch );
  56.  
  57.  
  58.         preg_match( '#<span id="TarifValue">(\d+(\,\d+))</span>#is', $html, $result );
  59.  
  60.         $result[ 1 ] = str_replace( ',', '.', $result[ 1 ] );
  61.  
  62. curl_close( $ch );
Slavenin Отправлено: 30 Июля, 2012 - 21:38:54 • Тема: Замкнутое перенаправление .htaccess • Форум: Apache и другие веб-серверы

Ответов: 3
Просмотров: 425
никто не знает?
Slavenin Отправлено: 27 Июля, 2012 - 11:08:34 • Тема: Замкнутое перенаправление .htaccess • Форум: Apache и другие веб-серверы

Ответов: 3
Просмотров: 425
это то, что вычисляется в выражении
CODE (htmlphp):
скопировать код в буфер обмена
  1.  RewriteCond %{REQUEST_URI} ^/htdocs/(.*)

эквивалент будет
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^/htdocs/(.*)$ /$1 [R=301,QSA, L]


разницы никакой
Slavenin Отправлено: 27 Июля, 2012 - 07:50:45 • Тема: Замкнутое перенаправление .htaccess • Форум: Apache и другие веб-серверы

Ответов: 3
Просмотров: 425
Всем доброго времени суток.
Есть простая, вроде бы, задача: если в адресе есть слово htdocs, то убрать это слово из адреса, если слова нет, то дополнить им адрес и отобразить страницу.

например, есть адрес site.ru/htdocs/catalog/
в этом случае нужно отобразить страницу htdocs/catalog/ как site.ru/catalog/
если же идет прямое обращение site.ru/catalog/
нужно просто отобразить страницу htdocs/catalog/ без изменения адресной строки

вторую задачу я решил, а вот с первой что-то никак не пойму...
Возникает то 500, то простой редирект на несуществующую страницу. Если же убрать у второго правила L , то возникает бесконечный редирект...
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. RewriteEngine on
  3.  
  4. RewriteCond %{REQUEST_URI} !^/htdocs.*
  5. RewriteRule ^(.*)$ /htdocs/$1 [QSA,L]
  6.  
  7. RewriteCond %{REQUEST_URI} ^/htdocs/(.*)
  8. RewriteRule ^(.*)$ /%1 [R=301,QSA, L]
  9.  
  10. ErrorDocument 404 /404.php
Slavenin Отправлено: 05 Ноября, 2011 - 14:50:52 • Тема: Пространства имен • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 7628
Цитата:
перебиваешь слэш реплэйсом в обратную сторону и получаешь путь к файлу

да нет, ничего перебивать не надо, приведенный выше класс прекрасно работает, достаточно просто положить классы в папки с соответствующими нэймспейсам именами
Slavenin Отправлено: 05 Ноября, 2011 - 14:25:28 • Тема: Пространства имен • Форум: Объектно-ориентированное программирование

Ответов: 10
Просмотров: 7628
OrmaJever, я тоже не могу понять почему способ через разрешение пространства имен вызывает ошибку причем он описан и в мануалах, но тем не менее не работает. Как вариант могу предположить, что в последних версиях языка что-то поменяли.
интересное обсуждение идет в комментах на хабре http://habrahabr[dot]ru/blogs/php/72097/

Страниц (19): [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