PHP.SU

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

Страниц (9): [1] 2 3 4 5 6 7 8 9 »

> Найдено сообщений: 135
Shtorm_sai Отправлено: 05 Июля, 2018 - 16:56:38 • Тема: Передача значений свойству внутри метода • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 2116
andrewkard пишет:
Shtorm_sai пишет:
method2 вернет значения переданные в конструктор.

не только, как и ожидается:
Array
(
[key1] => 1
[key2] => 2
[key3] => 2
[0] => 4
[1] => 5
)


Да все верно, разобрался)) Вот я тупняка поймал))) Извините за беспокойство))

Совет новичкам. Не сидите сутками за кодом иначе элементарных вещей не увидите))
Shtorm_sai Отправлено: 05 Июля, 2018 - 16:15:26 • Тема: Передача значений свойству внутри метода • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 2116
andrewkard пишет:
Ключи не совпадают? Может ошибка есть где? Вот сэмулировал, все норм:


Сорян, я сам затупил)

У меня идёт вызов метода и следом идёт другой вызов метода.
Вот второй вызов тупо не перезаписывается, использует данные из первого метода.

Т.е. по факту получается следующее:

PHP:
скопировать код в буфер обмена
  1.  
  2. class Test{
  3.     public $params;
  4.  
  5.     function __construct($val1,$val2,$val3){
  6.         $this->params = array('key1' => $val1, 'key2' => $val2, 'key3' => $val2);
  7.     }
  8.  
  9.     function method1(){
  10.  
  11.         return $this->send();
  12.  
  13.     }
  14.  
  15.     function method2($data){
  16.  
  17.         foreach($data AS $k=>$v){
  18.  
  19.             $this->params[$k] = $v;
  20.  
  21.         }
  22.  
  23.         return $this->send();
  24.  
  25.     }
  26.  
  27.     function send(){
  28.         return $this->params;
  29.     }
  30. }
  31.  
  32.  
  33. $test = new Test(1,2,3);
  34.  
  35. print_r($test->method1());
  36. print_r($test->method2([4,5]));
  37.  


method2 вернет значения переданные в конструктор.
Как это вылечить?
Shtorm_sai Отправлено: 05 Июля, 2018 - 14:53:35 • Тема: Передача значений свойству внутри метода • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 2116
Доброго всем времени суток. Вроде элементарное, а догнать не могу.
В конструкторе класса присваиваю к свойству массив:

PHP:
скопировать код в буфер обмена
  1.  
  2. $this->param = array('key1' => $val1, 'key2' => $val2, 'key3' => $val2);
  3.  


Далее в методе я добавляю ключи и значения:

PHP:
скопировать код в буфер обмена
  1.  
  2. function method1($data){
  3.  
  4. foreach($data AS $k=>$v){
  5.  
  6. $this->param[$k] = $v;
  7.  
  8. }
  9.                    
  10. $this->send();
  11.  
  12. }
  13.  


В метод send приходят только те значения которые указаны в конструкторе.
В чем моя ошибка?
Shtorm_sai Отправлено: 25 Ноября, 2017 - 21:07:19 • Тема: Запись в fifo файл • Форум: Работа с файловой системой и файлами

Ответов: 2
Просмотров: 2566
Sail пишет:
Но там есть одно замечание в примечании

Это я видел. Не совсем понимаю только, как установить нужные права)

P.s.
Разобрался

PHP:
скопировать код в буфер обмена
  1.  
  2. $oldUmask = umask(0);
  3. if (!file_exists( $fifoPath )) posix_mkfifo( $fifoPath , 0666);
  4. umask($oldUmask);
  5.  


Всем спасибо Радость
Shtorm_sai Отправлено: 25 Ноября, 2017 - 19:30:05 • Тема: Запись в fifo файл • Форум: Работа с файловой системой и файлами

Ответов: 2
Просмотров: 2566
Доброго времени суток товарищи программисты Улыбка

В общем есть скрипт который создаёт FIFO файл

PHP:
скопировать код в буфер обмена
  1.  
  2. $fifoPath = __DIR__ . '/1.fifo';
  3. if (!file_exists( $fifoPath )) posix_mkfifo( $fifoPath, 0600 );
  4.  


Есть другой скрипт который записывает в этот файл:

PHP:
скопировать код в буфер обмена
  1.  
  2. $fifo = fopen( $fifoPath, 'w' );
  3. $data = "Test str! \n";
  4. if(fwrite($fifo, $data, 1024) === FALSE){
  5.     echo "Не записано! \n\n";
  6. }
  7. else{
  8.     echo "Done \n\n";
  9. }
  10.  


Если второй скрипт запустить через браузер, он не пишет в данный файл, если через консоль то запишет нужную строку. Вопрос как мне добиться записи в файл через http запрос?

P.s
Всё дела в правах на файл.
Если при создании файла указать 0666

То после выполнения скрипта права будут 644

Как это исправить?)))
Shtorm_sai Отправлено: 03 Мая, 2017 - 19:44:37 • Тема: No input file specified • Форум: Программирование на PHP

Ответов: 2
Просмотров: 974
Здравствуйте! Решил перейти на php7 уж очень интересно стало. При переходе главная страница сайта открывается, остальные нет, пишут ошибку "No input file specified".
Я так понимаю проблема какая то с роутингом.

Сейчас в htaccess прописано следующее правило:
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^(.*)$ index.php/$1 [PT,L,QSA]


Пробовал такие варианты как:

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^(.*)$ /index.php/$1 [PT,L,QSA]

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^(.*)$ index.php?/$1 [PT,L,QSA]

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


Что еще можно попробовать?))))
Shtorm_sai Отправлено: 11 Февраля, 2017 - 06:29:10 • Тема: Нужен совет • Форум: Программирование на PHP

Ответов: 8
Просмотров: 1469
LIME пишет:
OrmaJever пишет:
но вопрос как следить за тем что бы скрипт не упал? при каждой итерации писать текущее время в файл и проверять его хотя бы раз в час
дальше тему не стал читать ибо уже припекло
Чувак открой для себя supervisor
От кого но от тебя не ожидал
Ты явно застоялся с местячковыми заказами
Подумай куда дальше расти
Не стой на месте
Не успакаивайся я тя прошу
(Добавление)
Прочитал все далее
По диагонале ибо не стоит читать внимательно
Охохошеньки
Итак
Shtorm_sai пишет:
Интересно. Почитаю про очереди.
нет
Не почитаю
А просто взял ....сел... и понял что за зверь
Это твое решение
Реализация на вкус ицветУлыбка
Главное однопоточность и очередь
Что из названия вытекает самособой но для понимающих это важно
......
Костыли?
Проверять и писать в файл?
Все уже придумано и сделано
Орма крутой кодер но его сила в реализации
По идеям он просто лошит...сколько его знаю....
Не слушай его совета в этом вопросе
(Добавление)
Рекурсий избегай
Пока не узнаешь алгоритмы и структуры данныз не делай рекурсий по возможности
Сильно легко можно получить много оверхеда
Тут можно целую дискуссию развернуть
Типа в контексте пхп итд итп
Короче....избегай если возможно


Я php стал интересоваться лет 5 назад, потом просто забросил. И вот по необходимости вернулся к данному ремеслу. И столько новых штук!) Спасибо за информацию буду запиливать)
Shtorm_sai Отправлено: 10 Февраля, 2017 - 21:39:07 • Тема: Нужен совет • Форум: Программирование на PHP

Ответов: 8
Просмотров: 1469
LIME пишет:
Самое простое Имхо тебе освоить очереди Редиса
Каждые 5мин? Тут надо подумать
Если хостинг то боль
Если свой сервак то тупо crontab -e
Короче могут быть нюансы


Интересно. Почитаю про очереди. Была идея дать возможность php добавлять задание в крон, но решил отказаться из за соображения безопасности. Была идея запускать крон просто и проверять на присутствие флага, если разрешено то выполнять если нет то останавливать. Так как после первого запуска он может долго обрабатывать данные. Но факт в том, что мне нужно каждые 5 секунд, а не каждые 5 минут. Улыбка Плюс ко всему будет второй такой скрипт, первый будет проверять так скажем заявки на запрос к api и если api вернул нужный ответ, делать другую запись в бд и второй цикл который будет выполнять каждые 10 секунд и будет уже работать со второй базой. Причём думаю ещё использовать тригеры mysql
(Добавление)
OrmaJever пишет:
ну по идее не сколько, т.к в конце каждого цикла можно unset делать всему, но php дырявый, и из него память утекает, так что хрен его знает )

А если рекурсию? Запускать заново с сохранением данных и предыдущий убивать?
Shtorm_sai Отправлено: 10 Февраля, 2017 - 21:29:17 • Тема: Нужен совет • Форум: Программирование на PHP

Ответов: 8
Просмотров: 1469
OrmaJever пишет:
5 секунд очень мало, я бы пустил это всё в цикл
PHP:
скопировать код в буфер обмена
  1. while( true ) {
  2.     // код
  3.     sleep(5);
  4. }

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


Ну это самый простой вариант, повешать в кроне ещё один скрипт на каждый час который будет монторить лог файл, и если запись последняя запись сделана давно отправлять предупреждение в виде смс или на почту. Вопрос в другом сколько этот скрипт памяти схвает?
Shtorm_sai Отправлено: 10 Февраля, 2017 - 19:53:31 • Тема: Нужен совет • Форум: Программирование на PHP

Ответов: 8
Просмотров: 1469
Доброго времени суток всем зашедшим сюда Улыбка
В общем вопрос следующий нужен скрипт который будет работать в фоне, проверять каждые 5 секунд наличие новых записей в БД и при условии, что они есть выполнять запрос по api к некоторым сервисам в порядке очереди, и в завсимости от ответа уже обновлять базу. Как лучше реализовать?

А ещё лучше если этот скрипт будет запускаться одним пользователем (первым), а остальные подключались бы к нему и вставали в очередь.)))
Shtorm_sai Отправлено: 10 Февраля, 2017 - 19:38:39 • Тема: Websocketed • Форум: Вопросы новичков

Ответов: 19
Просмотров: 1191
OrmaJever пишет:
я не знаю что это за ошибка, это к LIME, он же посоветовал эту либу, но ноде такой херни нет ))


Это то, что я изначально начал ковырять) Его "либу" я пока не использовал))) Что касается по node.js легко ли его интегрировать в существующий php сайт?)
Shtorm_sai Отправлено: 10 Февраля, 2017 - 19:22:02 • Тема: Websocketed • Форум: Вопросы новичков

Ответов: 19
Просмотров: 1191
OrmaJever пишет:
Shtorm_sai браузер подключается к серверу, создают тунель и сервер хранит у себя все открытые соединения, затем браузер и сервер могут друг другу слать сообщения в реальном времени. Как это выглядит в socket.io

клиент
CODE (javascript):
скопировать код в буфер обмена
  1. var socket = io('http://localhost:2053');
  2. socket.on('updateOnline', function( online ) {
  3.         console.log(online);
  4. })
  5. socket.on('newItem', function( item ) {
  6.         console.log(item);
  7. });


сервер (node.js)
CODE (javascript):
скопировать код в буфер обмена
  1. var io = require('socket.io').listen(2053);
  2. io.sockets.on('connection', function (client) {
  3.         // отправляем событие всем кроме текущего
  4.         client.broadcast.emit('updateOnline', 123);
  5.         // отправляем текущему клиенту
  6.         client.emit('updateOnline', 123);
  7. });
  8. setInterval(function() {
  9.     io.sockets.emit('newItem', {itemId:1});
  10. }, 2000)

тут всё куда проще, при подключении клиента всем отправляется событие updateOnline, и каждые 2 секунды всем уходит событие newItem. Так же само и клиент может посылать серверу любые данные

Ну да, логично. Вот, что у меня. Запускаю веб сокет, в js подключаюсь к ws адресу, в терминале наблюдаю такую шутку

Цитата:

Sat, 11 Feb 2017 00:17:19 +0700 | ACCESS | session | url:'http://site[dot]ru:999 9/' id:'1486747039688175382' remote:'nat-68-4.nsk.sibset.net.' command:'/usr/bin /php' origin:'http://site.ru' | CONNECT
Sat, 11 Feb 2017 00:17:19 +0700 | ACCESS | session | url:'http://site[dot]ru:999 9/' id:'1486747039688175382' remote:'nat-68-4.nsk.sibset.net.' command:'/usr/bin /php' origin:'http://site.ru' pid:'7219' | DISCONNECT


Как я понимаю, я приконетился, испольняющий файл сделал своё дело (сейчас это цикл до 30) и дисконект? Следовательно мне нужно ещё получается сервер написать сейчас свой, который будет распределять эти подключения?
Shtorm_sai Отправлено: 10 Февраля, 2017 - 18:52:00 • Тема: Websocketed • Форум: Вопросы новичков

Ответов: 19
Просмотров: 1191
К сожалению не совсем понимаю как вебсокеты работают( Всё установил, всё работает. Запускаю цикл, через JS подключаюсь, браузер ни чего не даёт делать пока цикл не завершится.)))
(Добавление)
LIME пишет:
Так в том и совет
Не разбирай костыли
Есть решение в котором уже все сделано
Например как сделаешь биение сердца? Кто кодил под вебсокеты поймет
Мое дело предложить
(Добавление)
Сокет ИО не приводить
Бажно
Не кашерно
Я ванильно кодил
Только пакеты ноды


По поводу Вашего предложения вообще тёмный лес) Что такое? Wamp2 pubSub?))))
Shtorm_sai Отправлено: 10 Февраля, 2017 - 15:48:22 • Тема: Websocketed • Форум: Вопросы новичков

Ответов: 19
Просмотров: 1191
OrmaJever пишет:
у вебсокетов очень хорошая поддержка в node.js, я советую использовать именно его, а не пхп

Да, я начитан уже про node.js но пока не настроен изменять старому, доброму php. ))) Спасибо за совет
(Добавление)
LIME пишет:
OrmaJever я тоже так считал
И писал бэк на ноде
Но
https://github[dot]com/voryx/Thruway
Отличное решение
Wamp2 pubSub
Есть клиенты
Проблемы не обнаружено
Рекомендую


Спасибо, но пока хочу разобраться с тем что имею)))
Shtorm_sai Отправлено: 10 Февраля, 2017 - 09:38:49 • Тема: Websocketed • Форум: Вопросы новичков

Ответов: 19
Просмотров: 1191
T1grOK пишет:
Вот же, тут описано https://github[dot]com/joewalnes/websocketd/wiki


Да видел я) Хотелось бы на живом примере)
(Добавление)
Блин нужно было не в эту ветку. Но задам вопрос тогда уже по теме.

Пункт номер 3
Цитата:
add the location of websocketd to your PATH variable


Я так понимаю нужно задать переменную в окружении. Как это сделать правильно?

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