Web Мастерская
Как узнать что работает на сервере Nginx или Apache
Проверить, что работает на сервере, можно при помощи функции
Строка:
Делать можно так:
...
get_headers()
, что возвращает заголовки, например:
[0] => HTTP/1.1 200 OK
[1] => Server: nginx/1.26.2
[2] => Date: Wed, 19 Feb 2025 13:07:34 GMT
[3] => Content-Type: text/html; charset=utf-8
[4] => Transfer-Encoding: chunked
[5] => Connection: close
// Другие заголовки
Строка:
Server: nginx/1.26.2
: говорит о том, что работает сервер Nginx.Делать можно так:
print_r(get_headers('pageURL'));
- Жалоба
Uncaught mysqli_sql_exception: Data too long for column
Получил ошибку: Uncaught mysqli_sql_exception: Data too long for column. Из текста ошибки ясно, что машина получила слишком длинные данные.
Я не стал менять тип поля, чтобы увеличить еёёмкость, я просто сделал проверку на длину строки, перед сохранением данных в Базу Данных (По аналогии: Тема: Слишком большое имя (failed to open stream: File name too long)).
Делаю так:
Готово. Ошибка исчезла.
Строка нужна для одногоразового поиска, и длиннее чем 250 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличениемёмкости поля, куда сохраняется запись, либо замену типа столбца....
Я не стал менять тип поля, чтобы увеличить её
Делаю так:
$insert['search_query'] = (mb_strlen($search) > 250) ? mb_substr($search, 0, 250) : $search;
Готово. Ошибка исчезла.
Строка нужна для одногоразового поиска, и длиннее чем 250 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличением
Магический метод __call(): Вызов при недоступных методов
Магический метод
Мои два метода (
С решением этой задачи мне помог магический метод
...
__call()
запускается при попытке обращения к несуществующему/недоступному методу:
public function __call($name, $arguments)
{
echo 'Метод: ' . $name . ' не найден.';
}
Мои два метода (
installation
и update
) были похоже друг с другом, за исключением деталей, я решил их объединить, в один, при этом обращение к методам должно было остаться прежним:
$class->installation();
$class->update();
С решением этой задачи мне помог магический метод
__call()
:
// Установка | Обновление
public function __call(string $name, array $arguments)
{
// Проверка: Если вызываемый метод не: installation, или не: update, то функция вернёт null
if (!in_array($name, ['installation', 'update']))
{
return null;
}
// Код функции
} // End: Установка | Обновление
PHP: Цикл в две колонки | В два столбика
Работая над одним приложением, потребовалось перечислить элементы массива в две колонки (Столбика):

Для решения этой задачи, у меня было два варианта. Первый:
И CSS к шаблону:
И второй:
Я выбрал первый вариант. Он мне показался лучшем, чем второй....

Для решения этой задачи, у меня было два варианта. Первый:
<?php foreach ($characteristics as $characteristic): ?>
<div class="feature">
<?php echo $this->lang()->phrase($characteristic['name']); ?>: <strong><?php echo $characteristic['info']; ?></strong>
</div>
<?php endforeach; ?>
И CSS к шаблону:
.feature {
display: inline-block;
width: 48%;
}
И второй:
<?php foreach ($characteristics as $key => $characteristic): ?>
<?php if ($key % 2): ?>
<div style="float: right;">
<?php else: ?>
<div style="float: left;">
<?php endif; ?>
<?php echo $this->lang()->phrase($characteristic['name']); ?>: <strong><?php echo $characteristic['info']; ?></strong>
</div>
<?php endforeach; ?>
Я выбрал первый вариант. Он мне показался лучшем, чем второй....
PHP: Дробное число без округления
В PHP есть функции:
Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
...
round
| ceil
| floor
, которые округляют дробные числа, в большую или меньшую сторону, в зависимости от функции и самого числа. Удобно, да не всегда...Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
$n = bcdiv('1762.789', 1, 2); // 1762.78
Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
$n = floor(12.399 * 100) / 100; // 12.39