
Maxim
20.03.2018
12:19:43

Chupa
20.03.2018
13:57:53
Я понял самую главную ошибку - хранил дату и время раздельно
поэтому возникали проблемы, когда время переваливает за 24:00


Anton
21.03.2018
07:42:08
День добрый, подскажите, пожалуйста.
Видимо думалка уже затуманилась.
У меня есть три сервера. Сервер №1 содержит АПИ и выгружает инфу из БД для серевра №2. Сервер №3 к серверу №1 доступа на прямую не имеет, поэтому использует сервер №2 как посредник в передаче инфы.
Делается всё максимально просто через file_get_contents и эхом стринга выдается (JSON).
Так вот с маленьким объёмом данных - все работает отлично.
Но вот с бОльшим объёмом на сервере №3 в браузере показывает ошибку от сервера №2
Warning: file_get_contents(http://SERVER_1_IP/server/api/output.php): failed to open stream: �����
При этом когда захожу по РДП на второй сервер и там вызываю в браузере АПИ - http://SERVER_1_IP/server/api/output.php, то file_get_contents срабатывает нормально и в браузере мне инфу всю отображает нормально.
Вопрос - почему на запрос от сервера №3 Апач(или ПХП?) сервера №2 выдаёт мне невозможность сделать file_get_contets, а с браузера напрямую на сервере №2 всё работает?
Это какая-то настройка ограничитель апача/php?

Google

Pavel
21.03.2018
08:00:33
Нужен совет.
1. Имеется сервер с Laravel
2. Нужно развернуть ещё один из фраймворков Yii,Symfony на этом же сервере
Что придумал я:
1. Попробовать Docker
2. Запустить на сервере 2 разные виртуальные машины
Какой вариант выбрать и есть ли лучшие варианты

Борис
21.03.2018
08:06:37
Виртуальные хосты погугли

$iD
21.03.2018
08:06:45
+

Pavel
21.03.2018
08:07:49

Борис
21.03.2018
08:08:36
Ну так погугли то что я тебе скинул. Ты ответил раньше, чем я открыл у себя вкладку.

Pavel
21.03.2018
08:15:02

Roman
21.03.2018
08:18:08
Привет!
Нужно реализовать скачивание файлов и проставить статус downloaded после скачивание. Как это лучше реализовать, чтобы не вышло, что во время скачивания файлов, крешнулась система или пропал инет, файлы не были использованы и скачать их уже нельзя.

Anton
21.03.2018
08:48:06


Sergey
21.03.2018
09:01:21


Anton
21.03.2018
09:03:23

Sergey
21.03.2018
09:05:50
ну, у меня фалы начинаются от 1 гига) Но и при размере 10-100м можно выжрать всю память, если много одновременных потоков

Google

Антон
21.03.2018
10:44:09
как отреффакторить класс в 3000 строк?
?

Valeriy
21.03.2018
10:45:00
таких классов быть не должно

Kirill
21.03.2018
10:45:13
спасибо кэп

Valeriy
21.03.2018
10:45:14
ну мало ли

Антон
21.03.2018
10:45:22
это зачастую не избежность когда ты устраиваешься работать

Valeriy
21.03.2018
10:45:25
декомпозируй хуль
да, понял

Антон
21.03.2018
10:45:49
в нем такие же огромные методы
вот думаю с чего начать декомпозировать. методы или класс

Sergey
21.03.2018
10:46:56
если метод один - дроби на приватные
если методов много - разделяй сначала на интерфейсы отдельные
вообще можешь почитать Фаулера на тему рефакторинга, там много приемов приводится

Антон
21.03.2018
10:47:35
21 метод
вру

Sergey
21.03.2018
10:48:22
21 метод
смотришь где и почему юзается тот или иной метод, выделяешь своего рода групки, для каждой групки делаешь интерфейсик, потом делаешь так что бы все зависили от нужного им интерфейсика, и как только это произойдет - можешь уже разрезать класс

Антон
21.03.2018
10:48:24
поиском показывает 71
71 метод, еп

Sergey
21.03.2018
10:49:00
ну и еще важный аспект - а есть ли в этом классе какой-либо стэйт?

Google

Антон
21.03.2018
10:49:59
нет по факту
это тупо сервис
который слишком много умеет

Sergey
21.03.2018
10:51:32
ISP придет тебе на помощь
ну и еще - посмотри на зависимости этого сервиса. Если все 70 методов юзают все зависимости или оооочень сильно пересекаются между собой, все эти методы относятся к одной зоне ответственности - то нет смысла дробить этот класс)

Maxim
21.03.2018
10:52:43

Sergey
21.03.2018
10:52:45
(скорее всего это не так либо же половину этих методов можно просто удалить и заменить чем-то еще)

Антон
21.03.2018
10:53:28
ISP - это что?

Sergey
21.03.2018
10:53:48
по моему опыту такой код рефакторить намного проще чем "архитектурные изыски", когда люди делают слоеную архитектуру бездумно, лепят везде наследование и.... кода как бы мало но разобраться в этом пиздеце проблематично.... а слои превращают код из вкусной лапши в не очень приятную лазанью
ISP - это что?
Interface Segregation Principle. То что я выше написал про "посмотри как методы юзаются и выдели для них интерфейсы по групкам поменьше"

Антон
21.03.2018
10:55:10
комментарий в начале класс доставляет:
@todo Самый грязный и костыльно перенесенный функционал находится здесь!!!
Все это страхоебищще перепиливать и перепиливать :) Ни в коем случае не берите пример с данного сервиса

Bohdan
21.03.2018
10:55:25
комментарий на русском - уже доставляет)

Антон
21.03.2018
10:55:41
а смысл мат переводить
классу от этого легче не станет )

Maxim
21.03.2018
10:57:32

Alex
21.03.2018
11:00:47

Sergey
21.03.2018
11:05:47

Bohdan
21.03.2018
11:06:42
у меня в паре мест @todo rewrite this crap и @todo get rid of this shame

Антон
21.03.2018
11:17:49
этот класс сборник всех запахов кода

Google

Антон
21.03.2018
11:17:56
огромное количество аргументов
$buildingNumber,
$email,
$flatNumber,
$houseNumber,
$nameApplicant = '',
$personalAccount,
$phone = '',
$service,
$street,
видимо это можно упаковать в VO?
Client, Address?

Bohdan
21.03.2018
11:21:13
можно

Антон
21.03.2018
11:21:50
и ведь так правильнее?

Alex
21.03.2018
11:26:22
Всем привет. Почему при возникновении эксепшна в try catch это не попадает?
Библиотека бросает эксепшн, а в моём коде catch его не ловит.

Admin
ERROR: S client not available

Bohdan
21.03.2018
11:27:52
не то ловишь, значит

Alex
21.03.2018
11:29:20

Bohdan
21.03.2018
11:30:23
поймал?если нет - лови \Exception и смотри отладчиком, что прилетело

Alex
21.03.2018
11:35:06

Roman
21.03.2018
12:21:49
привет! помогите разобратся с ZipArchive. Я архив создаю, но в браузере он не отдается
как сделать чтоб он скачался в браузере юзеру?
у меня щас он на сервере ложится

Bohdan
21.03.2018
12:22:41
отдать его с респонсом

Sergey
21.03.2018
12:23:37

Roman
21.03.2018
12:23:54
ок
предлагают через header() делать
щас попробую

Sergey
21.03.2018
12:27:07

Google

Ivan
21.03.2018
12:31:56
Кто-то работал с Ratchet либой?Можно как-то организовать приватные комнаты между двумя пользователями?

Sergey
21.03.2018
12:32:45

Valentin
21.03.2018
12:34:23

Sergey
21.03.2018
12:46:16
тут к слову hmac хорошо зайдет)
опять же - минутка рекламы - посмотри как сделан сабскрипшен к приватным каналам в центрифуге

Ivan
21.03.2018
12:59:07
я пытался разорбраться с цетрифугой... ну в Go я Null
по этому пока не рискнул

Sergey
21.03.2018
13:01:51
ты просто берешь и юзаешь

Roman
21.03.2018
14:06:00
как отдать файл с браузера? перебробывал все варианты тут https://habrahabr.ru/post/151795/
в респонс приходит мусор

Anton
21.03.2018
14:14:41
прочитал в заголовке: а с помощью PHP (например для сбора статистики скачиваний),
есть подозрения, что статья не очень хорошая.
И поясни свой вопрос.
Ты спрашиваешь как отдать файл С браузера? — что это значит?
в статье говорится про другое.

Roman
21.03.2018
14:29:20
я на бекенде формирую zip файл и ложу его в /tmp/saasfa.zip -> когда юзер жмет кнопку "скачать" он получает архив

Anton
21.03.2018
14:44:12
ок и юзер получает мусор в браузере? вместо скачивания файла?

Roman
21.03.2018
14:46:54
уже нет. просто 200 отдает и ложет файл рядом с index.php на сервере

Anton
21.03.2018
14:48:48
покажи свой код