Jan 30 2012

Oktell IP PBX: Отправляем SMS

3

Рубрика: Oktell,PHPVitaly Kovalyshyn @ 14:15

Oktell IP PBX в сценариях может легко отправлять SMS, а вот как быть с обычными пользователями? Для них я написал небольшую веб-страничку:

Теги: , , , , , , ,


Oct 22 2011

Как запустить PHP 5.3 и 5.2 на одном WEB-сервере

1

Рубрика: Linux,PHPVitaly Kovalyshyn @ 15:42

Обновил один из серверов с Debian lenny до squeeze. Все прошло гладко, только вот на одном из старых сайтов (joomla 1.0) посыпалась куча deprecated функций PHP. Не хотел трогать код этого сайта, решил запустить для него отдельно PHP5.2 на том же сервере. Вот как это я реализовал.

Устанавливаем зависимости, скачиваем PHP5.2 и распаковываем архив:

aptitude install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev
cd /tmp
wget http://www.php.net/get/php-5.2.17.tar.gz/from/ru.php.net/mirror -O php-5.2.17.tar.gz
tar zxvf php-5.2.17.tar.gz
cd php-5.2.17

Из исходников собираем PHP5.2 и устанавливаем в /opt/php5.2:

./configure --prefix=/opt/php5.2 --with-config-file-path=/opt/php5.2 --with-mysqli --with-mysql --with-curl --with-gd --with-jpeg-dir --enable-cli --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect
make
make install

Проверяем:

/opt/php5.2/bin/php -v
PHP 5.2.17 (cli) (built: Oct 22 2011 15:05:51)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

Запускать для этого сайта PHP5.2 будем через fastcgi.

aptitude install libapache2-mod-fastcgi
a2enmod cgi fastcgi actions
invoke-rc.d apache2 restart

Создадим исполняемый файл /opt/php5.2/bin/php-cgi, который содержит:

#!/bin/sh
PHPRC="/opt/php5.2/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.2/bin/php-cgi

В виртуальном хосте нужного сайта добавляем:


SetHandler application/x-httpd-php5

ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi
Action application/x-httpd-php5 /php52-cgi
AddHandler application/x-httpd-php5 .php

Перезапустим Apache и проверяем что наш сайт уже использует PHP 5.2, когда все остальные 5.3

invoke-rc.d apache2 restart

Теги: , , , , , ,


Apr 18 2010

Как перезапустить PPPoE на FreeBSD?

2

Рубрика: FreeBSD,PerlVitaly Kovalyshyn @ 15:02

После того, как Укртелеком ввел новые тарифы на ADSL и до 24 Мбіт/с дома – это уже реальность, начал я думать какой-то скрипт для перезапуска PPPoE соединения. Моя линия смогла выдержать соединение на 17 Мбіт/с, но соединение на FreeBSD стало регулярно 1 раз в сутки зависать.

И так, на Perl написал скрипт, который пингует Яндекс (у Вас должен быть установлен perl модуль p5-Net-Ping) и если пинг не проходит, перезапускаем соединение. События логируем в /var/log/ppp.log для анализа. А вот и сам скрипт, который нужно прописать в crontab:

Читать далее →”Как перезапустить PPPoE на FreeBSD?”

Теги: , , , , , , , , ,


Mar 27 2010

Обмеження кількості повідомлень для форуму phpBB

2

Рубрика: PHPVitaly Kovalyshyn @ 00:39

Виникла необхідність обмежити кількість повідомлень, які розміщують певні користувачі на форумі phpBB 3.0.7. Віднайшов рішення цієї задачі!

Створюємо файл modinstall.php наступного вмісту:

    < ?php
        define('IN_PHPBB', true);
        $phpbb_root_path = './';
        $phpEx = substr(strrchr(__FILE__, '.'), 1);
        include($phpbb_root_path . 'common.' . $phpEx);
        $user->session_begin();
        $auth->acl($user->data);
        $user->setup();
        include($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
        $auth_admin = new auth_admin();

        $result = $auth_admin->acl_add_option(array(
            'local'      => array('u_limit_posts_per_day'),
            'global'   => array('u_limit_posts_per_day')
        ));

        print ('Permissions install ' . ($result ? 'completed successfully' : 'failed'));
    ?>

Встановлюємо на файл всі необхідні прав та виконуємо в браузері. Після, файл видаляємо!

Читать далее →”Обмеження кількості повідомлень для форуму phpBB”

Теги: , ,


Mar 10 2010

Backup MS SQL Express по расписанию

1

Рубрика: SQLVitaly Kovalyshyn @ 11:08

Необходимо выполнить резервное копирование по расписанию на установленном SQL Express. К большому сожалению JOBs нету :( Воспользуемся Batch файлом и запускаем его по расписанию ( Windows расписанию или nnCron! ;) )

Для SQL Server 2005 или 2008 берем sqlcmd.exe, а для SQL Server 2000 – osql.exe
Пишим батник:

@ECHO OFF

sqlcmd -Q "BACKUP DATABASE [myDB] TO  DISK = N'D:\myDB.bak' " -Slocalhost\SQLEXPRESS -dmyDB -E -oD:\Output.txt

@ECHO ON

Запускаем! У нас должна создаться резервная копия базы [myDB] на диске D:\myDB.bak, а в файле D:\Output.txt – результат выполнения команды. Все!

Здесь детали использования!

Теги: ,


Mar 07 2010

Сайт без проблем із кодуванням

0

Рубрика: PHPVitaly Kovalyshyn @ 19:50

Після того, як я переніс один сайт на новий сервер, то отримав замість тексту, щось таке:
?????? ??? ????? ?????????? ???? ???? ??
Проблема в тім, що у попередній версії MySQL текст у базі зберігався у кодуванні Windows-1251, після оновлення – UTF8. Вирішення проблеми, оголосити набір символів у PHP скрипті відразу після з’єднання:

@mysql_pconnect($server, $user, $password);
$db_connect_id = @mysql_select_db($dbname);
@mysql_query(" SET NAMES 'cp1251' ", $db_connect_id);

Теги: ,


Feb 23 2010

Права доступа к таблицам

0

Рубрика: SQLVitaly Kovalyshyn @ 18:07

Если нужно быстро узнать каким пользователям какие права доступа установлены к таблице в базе Microsoft SQL, можно воспользоватся запросом:

SELECT dp.NAME AS principal_name,
           dp.type_desc AS principal_type_desc,
           o.NAME AS object_name,
           p.permission_name,
           p.state_desc AS permission_state_desc
   FROM    sys.database_permissions p
   LEFT    OUTER JOIN sys.all_objects o
   ON     p.major_id = o.OBJECT_ID
   INNER   JOIN sys.database_principals dp
   ON     p.grantee_principal_id = dp.principal_id
   WHERE o.NAME = 'tbl_Bank'

Теги: , ,


Feb 16 2010

Getting the Week Start Date and Week End Date in SQL

0

Рубрика: SQLVitaly Kovalyshyn @ 09:06

Suppose you’re given a date and asked to retrieve data for the whole week in which the given date falls. The example code produces the Week Start Date and Week End Date:

--Please set your appropriate values for @REPORT_DATE and @WEEK_BEGINING 

DECLARE @REPORT_DATE DATETIME, @WEEK_BEGINING VARCHAR(10)
SELECT @REPORT_DATE = '2004-09-21T00:00:00'
SELECT @WEEK_BEGINING = 'MONDAY'

IF @WEEK_BEGINING = 'MONDAY'
    SET DATEFIRST 1
ELSE IF @WEEK_BEGINING = 'TUESDAY'
    SET  DATEFIRST 2
ELSE IF @WEEK_BEGINING = 'WEDNESDAY'
    SET  DATEFIRST 3
ELSE IF @WEEK_BEGINING =  'THURSDAY'
    SET  DATEFIRST 4
ELSE IF @WEEK_BEGINING =  'FRIDAY'
    SET  DATEFIRST 5
ELSE IF @WEEK_BEGINING =  'SATURDAY'
    SET  DATEFIRST 6
ELSE IF @WEEK_BEGINING =  'SUNDAY'
    SET  DATEFIRST 7 

DECLARE @WEEK_START_DATE DATETIME, @WEEK_END_DATE DATETIME
--GET THE WEEK START DATE
SELECT  @WEEK_START_DATE = @REPORT_DATE - (DATEPART(DW,  @REPORT_DATE) - 1) 

--GET THE WEEK END DATE
SELECT  @WEEK_END_DATE = @REPORT_DATE + (7 - DATEPART(DW,  @REPORT_DATE))

PRINT 'Week Start: ' + CONVERT(VARCHAR, @WEEK_START_DATE)
PRINT 'Week End: ' + CONVERT(VARCHAR, @WEEK_END_DATE)

The above code produces the following result:

Week Start: Sep 20 2004 12:00AM — Which is Monday
Week End: Sep 26 2004 12:00AM — Which is Sunday

Теги:


Feb 04 2010

Как загрузить файл из PHP в MS SQL

2

Рубрика: PHPVitaly Kovalyshyn @ 11:16

Целые день пытался корректно загрузить файл в Microsoft SQL в Blob Data Field. И вот, решение найдено! Что бы Вам потом не пришлось много времени потратить на это, рассказываю:

$FileData = addslashes(fread(fopen($filePath, "rb"), filesize($filePath)));

Вот так мы преобразуем файл, а дальше – обычный INSERT в базу!

Теги: ,


Dec 20 2009

Заміна однієї стрічки по шаблону в багатьох файлах

1

Рубрика: Perl,ShellVitaly Kovalyshyn @ 13:09

Стояла задача: швидко замінити у 200 XML файлах стрічку “tbl_Offering” на “tbl_OfferingMovement”. Ось як це можна зробити одним рядком Perl коду під Debian GNU/Linux (оригінал кожного файлу зберігається окремо з розширенням bak):

perl -i.bak -p -e 's/tbl_Offering/tbl_OfferingMovement/gi;' *

Теги: , , , , ,