Ответы пользователя по тегу PHP
  • Обмен json-ом между PHP-скриптами на разных серверах

    @cmx
    Думаю, проблема в том, что ты явно не указываешь в каком поле передавать данные. Попробуй следующую конструкцию:
    curl_setopt($curl, CURLOPT_POSTFIELDS, array(
        'apikey' => $api_key,
        'data' => $json_data,
    ));


    Также можешь попробовать указать сразу целиком файл для передачи.
    Для передачи файла, укажите перед именем файла @, а также используйте полный путь к файлу. Тип файла также может быть указан с помощью формата ';type=mimetype', следующим за именем файла.

    Original: www.php.net/manual/ru/function.curl-setopt.php
    Ответ написан
    Комментировать
  • Как хранить массивы в базе данных?

    @cmx
    Сериализации я бы предпочел JSON. Время обработки у них примерно одинаковое, а вот место JSON-массивы занимают меньше на 30-40%.

    А вообще, хранить массивы в БД - крайне не благодарное дело. Если это можно хоть как-то обойти - лучше сделайте это, иначе это потом выйдет дорогой ценой рефакторинга и оптимизации БД.
    Ответ написан
    1 комментарий
  • Снова вопрос про cron и php exec?

    @cmx
    SELinux установлен?
    Если да, то попробуй
    setenforce 0
    Если после этого все заработало, то либо отключи SE-службу, либо гугли в сторону его администрирования.
    Ответ написан
    Комментировать
  • Проверки массива $_GET

    @cmx
    Могу порекомендовать свою библиотеку для таких целей. Если ваша проблема, выглядит действительно так, как вы ее описали, то это будет простым решением.
    https://github.com/comm1x/phpvalidator
    Финальный код будет выглядеть примерно так:
    <?php
    try {
       Validator::filter($_GET, array(
          // здесь вы описываете правила валидации
       ));
    } catch (ValidationException $e) {
        show404(); // отправляем 404
    }
    Ответ написан
    Комментировать
  • Какие есть быстрые и надежные способы на PHP проверить сайт на доступность?

    @cmx
    Самое простое - получить 200-й заголовок от сайта
    Также можно проверить запись в dns через checkdnsrr()
    Ответ написан
    Комментировать
  • Мы ищем PHP-программиста или разработчика. И реально ли его найти на такую ЗП в Москве?

    @cmx
    Вполне реально. Не сказал, что речь про какие-то потолочные суперскилы. Единственное, для Москвы ставка конечно немного занижена. Как мне кажется, она соответствует уровню не плохого самостоятельного php-программиста, но под ваше описание мне кажется более уместно название "web-developer", т.е. гораздо более широкий специалист, чем просто человек, хорошо использущий php и около-php-шный инструментарий.
    Ответ написан
    Комментировать
  • Как запустить Socket сервер PHP на хостинге или сервере?

    @cmx
    Сервер с выделенным IP и линуксом, на него phpDaemon, который будет выступать в роли WebSocketServer, конфигурируем, поднимаем, перенаправляем на свое приложение, которое лежит рядом и все ок. Я не знаю о чем писали товарищи выше, но это действительно рабочее решение. При этом тебе абсолютно не нужны вебсервера, apache, nginx и весь HTTP протокол - можно забыть.
    Ответ написан
    5 комментариев
  • Как написать регулярное выражение для проверки следующих примеров?

    @cmx
    Также советовал бы добавить в закладки инструмент для удобного тестирования регулярных выражений, крайне рекомендую: regex101.com
    Ответ написан
    Комментировать
  • PHP: как передать значения value из select?

    @cmx
    С использованием шаблонизаторской нотации в html-коде (советую, дабы не говнокодить):
    <?php
    $obls = ['opel', 'mazda', 'val3', 'val4']; // available since php 5.4
    ?>
    <select class="selector">
            <option value="">Choose an item...</option>
            <?php foreach ($obls as $key => $val) : ?>
            <option value="<?php echo $key; ?>"><?php echo $val; ?></option>
            <?php endforeach; ?>
    </select>
    Ответ написан
    Комментировать
  • Как средствами php, css и js лучше всего реализовать онлайн-обработка изображений?

    @cmx
    Мой совет аналогичен предыдущему, но советовал бы imagemagick, т.к. лично имею опыт работы с ним, а также php обертку для него - phmagick, от которой поняв весь процесс позже можно будет отказаться.
    Кратко, все сводится к тому, что php вызывает методом exec() утилиту операционной системы, которая уже обрабатывает картинку, но не сам php, и уж тем более css js html...
    По той же песне можно работать и с видео через ffmpeg.
    Рабочие функции для обрезки и ресайза картинок, настрой и подставь свои пути библиотеки (win style: C:/programs/imagemagick).
    /**
     * Crop images
     * @param $file string Path to cropping file
     * @param $left int Pixels to left margin
     * @param $top int Pixels to top margin
     * @param $width int Width of final images in pixels
     * @param $height int Height of final images in pixels
     */
    public static function crop($file, $left, $top, $width, $height) {
    	exec(strtr('{imagick}convert {file} -gravity NorthWest -crop {w}x{h}+{l}+{t} {file} 2>&1', array(
    		'{imagick}' => '/usr/bin',
    		'{file}' => str_replace(' ', '\\ ', realpath($file)),
    		'{l}' => $left,
    		'{t}' => $top,
    		'{w}' => $width,
    		'{h}' => $height,
    	)), $out, $var);
    }
    
    /**
     * Change resolution of image
     * @param $file string Path to image
     * @param $size int Value of image's sides in pixels
     * @throws Exception\BaseException
     * @throws Exception\ImagemagickException
     */
    public static function resize($file, $size) {
    	if (! is_numeric($size)) {
    		throw new BaseException;
    	}
    
    	exec(strtr('{imagick}convert -scale "{resolution}>" -quality {quality} -strip "{target}" "{target}" 2>&1', array(
    		'{imagick}' => '/usr/bin',
    		'{resolution}' => $size.'x'.$size,
    		'{quality}' => 95),
    		'{target}' => $file,
    	)), $out, $var);
    
    	if ($var > 0) {
    		$msg = null;
    		if ($var === 1) {
    			$msg .= 'Probably incorrect path to the library';
    		}
    
    		throw new ImagemagickException('Imagemagick error #'.$var.' '.$msg);
    	}
    }
    Ответ написан
    Комментировать