Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> паттерн singelton
greenrow  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 42067
На форуме: 1 год, 1 месяц, 2 дня
Карма:




Добрый день!

Создаю класс который должен вызвать свой конструктор только один раз ( Singelton)


Class MessageSocket{

protected $socket;


private static $instance=null;



public static function singleton()
{
if (null === self::$instance){

/созднание нового обьекта и вызов конструктора/

self::$instance = new self();

}
return self::$instance;
}



/констурктор/

protected function __construct()
{

$this->socket= socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
error_reporting('E_ALL');
socket_connect($this->socket,"127.0.0.1",7777);
if (!$this->socket) {
echo "error connection";
}

}






}


Это тестовый класс.

При клике на элемент , на сервер отправляется определенный ajax пост запрос и вызывается данный класс

   if(Yii::$app->request->post('load_message_area')){


$message_obj=MessageSocket::singleton();
}



Проблема в том,что при каждом клике создается новый конструктор и в итоге создается новое сокет соединение.., то есть что то не так делаю, хотя сам класс простой и вроде все верно, может кто то сталкивался с подобной проблемой реализации паттерна Singelton?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 24 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


о боже......


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
greenrow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 42067
На форуме: 1 год, 1 месяц, 2 дня
Карма:




ну и что же не так? я прошу помощи может и делаю что то не то
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 5 дней
Карма: 184




Может это на Солнце магнитные бури или еще что. В соседней теме один хочет curl'ом яваскрипт исполнять, тут объект сохранить между запусками скрипта синглтоном....
greenrow. Какую задачу пытаешься решить? Быть может ты идешь не в том направлении.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 24 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


greenrow
ты вообще принцип этого паттерна понимаешь?

его смысл не плодить кучу объектов, а вернуть имеющийся (если он есть)

на ряду с синглтоном используют статический класс - он вообще объекты не создаёт.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
greenrow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 42067
На форуме: 1 год, 1 месяц, 2 дня
Карма:




Я его первый раз использую,но суть понятна
Но мне это и надо -- не плодить кучу объектов, а вернуть имеющийся (если он есть)

Разве это код


public static function singleton()
{
if (null === self::$instance){

/созднание нового обьекта и вызов конструктора/

self::$instance = new self();

}
return self::$instance;
}


не запрещает создание нового контструктора, при повторном обращение к

$message_obj=MessageSocket::singleton();



PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 6 дней
Карма: 70




Цитата
Проблема в том,что при каждом клике создается новый конструктор

Ты когда делаешь новый запрос, скрипт отрабатывает по новой. Всё равно что страницу обновить.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
greenrow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 42067
На форуме: 1 год, 1 месяц, 2 дня
Карма:




Цитата (kaww @ 6.11.2015 - 13:37)
Может это на Солнце магнитные бури или еще что. В соседней теме один хочет curl'ом яваскрипт исполнять, тут объект сохранить между запусками скрипта синглтоном....
greenrow. Какую задачу пытаешься решить? Быть может ты идешь не в том направлении.

Есть сокет сервер на python при регистрации создаю websocket соединение с этим сокет сервером.

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

Но при каждой отправке сообщения у меня создается новое сокет соединение(потом оно сразу в стадию закрытия переходит),вот я и пытаюсь сделать так -
при открытие окна с сообщениями создается одно сокет соединение,а далее уже при отправке сообщение использовался бы только этот сокет адрес,а не плодились новые.

Так конечно можно и забить на это .Новые сокеты закрываются.Но все равно какое то время висят в стадии закрытия да и неверно это.

Сейчас расматриваю вариант обработке сразу на веб сокете. Но мне интресно возможно ли такая реализация..с помощью singelton
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
greenrow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 42067
На форуме: 1 год, 1 месяц, 2 дня
Карма:




Цитата (Arh @ 6.11.2015 - 14:21)
Цитата
Проблема в том,что при каждом клике создается новый конструктор

Ты когда делаешь новый запрос, скрипт отрабатывает по новой. Всё равно что страницу обновить.

Спасибо! наверное надо продумать другие пути решения,попробую через константу зафиксировать
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 20 дней
Карма: 111




greenrow

singleton работает в рамках одного запуска, отправь 30 раз запрос на страницу создаться 30 раз твой класс синглтон, но и как положено внутри каждого процесса он будет выполнять свою функцию одиночки, но одиночка из процесса 1 <> одиночки из процесса 2

если тебе надо открывать сокет для всех то смотри в сторону reactphp или comet на базе nginx и все равно твой сокет должен будет запущен из консоли что бы к нему можно было обратиться


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
greenrow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 42067
На форуме: 1 год, 1 месяц, 2 дня
Карма:




Цитата (bestxp @ 6.11.2015 - 14:31)
greenrow

singleton работает в рамках одного запуска, отправь 30 раз запрос на страницу создаться 30 раз твой класс синглтон, но и как положено внутри каждого процесса он будет выполнять свою функцию одиночки, но одиночка из процесса 1 <> одиночки из процесса 2

если тебе надо открывать сокет для всех то смотри в сторону reactphp или comet на базе nginx и все равно твой сокет должен будет запущен из консоли что бы к нему можно было обратиться

Спасибо=)Я это не учел..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса