Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   fsockopen в одну строку (https://javascript.ru/forum/server/81599-fsockopen-v-odnu-stroku.html)

ALFRED450 22.12.2020 11:50

fsockopen в одну строку
 
Помогите разобраться. Имеется вот такой код:
$fp = fsockopen("127.0.0.1", 1234);

if (!$fp) {
    echo "<b><font color='red'> Оффлайн</font></b>";
} else {
    echo "<b><font color='green'> Онлайн</font></b>";
}

на html все это работает, но нужен другой вариант, указав лишь одну переменную $fp в зависимости от результата получилось бы:
$fp = Оффлайн или $fp = Онлайн
переменная $fp далее будет объединятся с рисунком, поэтому нужна одной переменной

Vlasenko Fedor 23.12.2020 11:07

ALFRED450,
https://www.php.net/manual/ru/function.fsockopen.php
поясните, что вы стараетесь делать
каким образом сокеты вы связали с изображением
и не ошиблись вы темой задав вопрос по php в теме про js

ALFRED450 23.12.2020 22:58

Цитата:

Сообщение от Vlasenko Fedor (Сообщение 532014)
ALFRED450,
https://www.php.net/manual/ru/function.fsockopen.php
поясните, что вы стараетесь делать
каким образом сокеты вы связали с изображением
и не ошиблись вы темой задав вопрос по php в теме про js

командой выше мы получаем некий результат, который потом выводится на страницу онлайн или офлайн. Это все работает. Мне нужно, чтоб в итоге указав одну лишь переменную $fp получал бы результат (онлайн или офлайн)

заменить вывод на присвоение его переменной
$fp = fsockopen(...) ? 'On' : 'Off';
в общем избавится от echo, а как верно это сделать не знаю.
Далее будет применяться так:
$bg->annotateImage($draw, $...pixel_x, $...pixel_y, 0, $fp);
если знаете помогите пожалуйста как все одной строкой выше написаный пример сделать.

Vlasenko Fedor 24.12.2020 00:22

$fp = !empty(fsockopen("127.0.0.1", 1234));

тогда :)

laimas 24.12.2020 01:01

Цитата:

Сообщение от ALFRED450
заменить вывод на присвоение его переменной
$fp = fsockopen(...) ? 'On' : 'Off';
в общем избавится от echo, а как верно это сделать не знаю.

А вам значит не показали как? Либо в своем:

if (!$fp) {
   $fp = 'Off';
} else {
   $fp = 'On';
}


Либо проще записывается тернарным оператором:

$fp = $fp ? 'On' : 'Off';


В чем опять проблемы?

ALFRED450 24.12.2020 14:29

Цитата:

Сообщение от laimas (Сообщение 532052)
А вам значит не показали как? Либо в своем:

if (!$fp) {
   $fp = 'Off';
} else {
   $fp = 'On';
}


Либо проще записывается тернарным оператором:

$fp = $fp ? 'On' : 'Off';


В чем опять проблемы?

спасибо получилось и работает
$statserv = fsockopen("127.0.0.1", 1234) ? 'On' : 'Off';

а назначит цвет On и Off можно? по разному пробовал, выводит текстом код или ошибка

laimas 24.12.2020 14:46

Я не ясновидящий, что вы там пробуете и какие ошибки, мне неведомо.
Цвет текста определяется установкой в Imagick, какой определяйте условием.

Вообще же это похоже на какую-то глупость, если бы это выполнял клиент, тогда логично, иначе хреь неимоверная.

laimas 24.12.2020 15:05

Ясно, вы и значения слова "веб" не понимаете, ибо когда я говорил об этом, ответом было, что к нему это все не имеет отношения. Странно что тогда за чат такой был бы.

Бог с ним, подумайте над тем, что если чат, это сокеты, то Off для кого (да еще и localhost, и у "хозяина", ВК)? Что касается результата, то плохо, текст не прочесть.

ALFRED450 24.12.2020 16:04

Цитата:

Сообщение от laimas (Сообщение 532056)
Ясно, вы и значения слова "веб" не понимаете, ибо когда я говорил об этом, ответом было, что к нему это все не имеет отношения.

чат действительно никакого отношения не имеет к веб, это отдельная программа сервер как отдельная программа и клиент который цепляется к нему. Статистика собирается плагином который выполняется через VB скрипт, а fsockopen просто проверяет порт, открыт и показывает результат, на веб странице это тоже видно commfort.su. Про текст, дело в шрифте или размере?

laimas 24.12.2020 16:09

$statserv = @fsockopen(...

laimas 24.12.2020 16:10

Цитата:

Сообщение от ALFRED450
Про текст, дело в шрифте или размере?

И то, и другое имеет место быть.

ALFRED450 24.12.2020 21:09

Цитата:

Сообщение от laimas (Сообщение 532059)
$statserv = @fsockopen(...

спасибо помогло, а что означает собака в таких случаях?

laimas 24.12.2020 21:51

https://www.php.net/manual/ru/langua...rorcontrol.php

ALFRED450 30.12.2020 10:34

Возвращаясь про цвет для статуса в зависимости как отработает команда
$statserv = @fsockopen("192.168.1.1", 1234) ? 'online' : 'offline';

выводит это все так:
$draw->setFillColor("rgb(".$statserv_font_color.")");

а настройки сделал вот такие:
$statserv_font_color = ($statserv == 'on') ? '160,0,0' : '40,120,0';

первое значение - красный, второе зеленый
при доступности адреса как положено online - зеленый
отключаю сервер (порт не доступен) offline - все равно зеленый
подскажите где ошибка пожалуйста

Vlasenko Fedor 30.12.2020 11:58

$statserv_font_color = ($statserv === 'online') ? '160,0,0' : '40,120,0';

ALFRED450 30.12.2020 12:26

Цитата:

Сообщение от Vlasenko Fedor (Сообщение 532202)
$statserv_font_color = ($statserv === 'online') ? '160,0,0' : '40,120,0';

все равно, зеленый, лишь надпись офлайн, но зеленая, ну не хочет он краснеть почему то

laimas 30.12.2020 13:11

Если от одного условия зависят две переменные, то нечего мудрить:

if(@fsockopen(...)) {
    $status = 'on';
    $color = 'green';
} else {
    $status = 'off';
    $color = 'red';
}

ALFRED450 30.12.2020 14:07

Цитата:

Сообщение от laimas (Сообщение 532204)
Если от одного условия зависят две переменные, то нечего мудрить:

if(@fsockopen(...)) {
    $status = 'on';
    $color = 'green';
} else {
    $status = 'off';
    $color = 'red';
}

спасибо сработало, а можно это в одну строку сделать
@fsockopen("192.168.1.1", 1234) ? 'online' : 'offline';
не столь важно конечно, но чтобы просто знать как это

ALFRED450 30.12.2020 14:17

С наступающим Вас. Спасибо за терпение ))

laimas 30.12.2020 17:05

Цитата:

Сообщение от ALFRED450
а можно это в одну строку сделать

Нельзя и лишено смысла, вытяните эту запись в строку чтобы убедится.


Часовой пояс GMT +3, время: 02:57.