• Обмен 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 комментарий
  • Как добавить/исправить недостающие заголовки при компиляции ?

    @cmx
    Если вы хотите добавить файл php.h и библиотеки main, который лежит например в /usr/local/include/main/php.h, то в cpp-файле:
    #include <main/php.h>

    А в makefile:
    INCLUDES = ... -I/usr/local/include
    Ответ написан
    Комментировать
  • Снова вопрос про cron и php exec?

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

    @cmx
    Возможно есть смысл переделать колонку в int с параметром ZEROFILL для автоматического заполнения нулями.
    Если принципиально с varchar и у вас действительно varchar и передаете вы string, то многовероятно, что имеет место конвертация в int, и скорее всего где-то в модельное слое.
    Ответ написан
    Комментировать
  • Как создать свое событие в jQuery?

    @cmx Автор вопроса
    Очевидно и по существу, никакими обсерверами, биндами и триггерами здесь не пахнет.
    Решение оказалось не самое тривиальное, но архитектурно корректное и звучит как "Специальные события jQuery".
    В рамках моей задачи, рабочая реализация выглядит следующим образом:
    $.event.special.dblrightclick = {
    	setup : function(data, namespaces) {
    		var e = $(this);
    		e.bind("contextmenu", $.event.special.dblrightclick.handler);
    		e.data("x", null);
    		e.data("y", null);
    		e.data("time", null);
    		e.data("limit", data || 400);
    	},
    
    	teardown : function(namespaces) {
    		$(this).unbind("contextmenu", $.event.special.dblrightclick.handler);
    	},
    
    	handler : function (event) {
    		event.preventDefault();
    		var e = $(this);
    
    		if (e.data("x") == event.screenX && e.data("y") == event.screenY
    			&& (event.timeStamp - e.data("time")) < e.data("limit")) {
    			e.data("x", null);
    			e.data("y", null);
    			e.data("time", null);
    			event.type = "dblrightclick";
    			$.event.dispatch.apply(this, arguments);
    		} else {
    			e.data("x", event.screenX);
    			e.data("y", event.screenY);
    			e.data("time", event.timeStamp);
    		}
    	}
    };


    И, соответственно, ее использование:
    $("#widget").on("dblrightclick", ".button", function() {
    	alert("dblrightclick fired");
    });


    А также управление единственным параметром задержкой:
    $("#widget").on("dblrightclick", ".button", 200, function() {
    	alert("dblrightclick fired");
    });


    Очевидно, что данный код является расширением базового фреймворка и не имеет никакого отношения к бизнес-логике приложения. Как следствие - данный код можно подключать бесконфликтно к разным проектам.

    UPD Полное решение: https://github.com/comm1x/jquery-event-dblrightclick
    Ответ написан
    Комментировать
  • Debian: почему клиент yandex-disk сильно загружает процессор?

    @cmx
    Проблема по-прежнему существует, дикий загруз процессора.
    Ответ написан
    Комментировать
  • Проверки массива $_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-шный инструментарий.
    Ответ написан
    Комментировать
  • Проблема с установкой pecl-event?

    @cmx
    Решение в Fedora/RedHat/Centos:
    sudo yum install libevent-devel
    Ответ написан
    Комментировать
  • PHP: mkdir, почему permission denied при 0777?

    @cmx Автор вопроса
    Проблема была в SELinux Policy, спасибо @Sander_Li

    Решение:
    # chcon -R -t httpd_sys_content_rw_t /project_root

    Взято с: stackoverflow.com/questions/13908722/php-unable-to...
    Еще можно посмотреть здесь: https://coderwall.com/p/uahuma
    Ответ написан
    1 комментарий
  • Как запустить 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);
    	}
    }
    Ответ написан
    Комментировать