Показаны сообщения с ярлыком php. Показать все сообщения
Показаны сообщения с ярлыком php. Показать все сообщения

24 окт. 2015 г.

Установка Zabbix в контейнеры OpenVZ Proxmox - раздельно database на postgreSQL и frontend+server

Что хотим получить?

Zabbix, если его ставить из appliance или пакетными менеджерами по-умолчанию, обладает проблемами с масштабируемостью. Поставить его просто и просто начать работу, но решение будет не масштабируемым и потом, при расширении системы, потребуется много работы по замене сервера БД на Postgres, выносе БД на отдельный хост, запуске failover-кластера.
Есть свободная платформа виртуализации Proxmox, в которой помимо полной виртуализации qemu есть контейнеры OpenVZ - аналог Solaris Zones. Контейнеры позволяют запускать множество систем на одном ядре с малыми накладными расходами. Proxmox позволяет легко бэкапить зоны, поддерживает Live Migration и кластера.
PostgreSQL устойчивее чем MySQL при высоких нагрузках, тоже позволяет создавать кластеры.

Результат - без перекомпиляции всех пакетов, при минимуме усилий, получить полностью свободную, легко масштабируемую в дальнейшем, отказоустойчивую конфигурацию Zabbix.

23 окт. 2015 г.

mysql <-> postgresql cli

  • $ mysql -u root -prootpassword
$ su - postgres
$ psql
  • mysql> show databases;
postgres=# \l
  • mysql> use mybase;
postgres=# \c mybase
  • mysql> show tables;
ocdp=# \dt
  • mysql> create database mybase;
postgres=# create database mybase;
  • mysql> drop database mybase;
postgres=# drop database mybase;
  • mysql> quit
postgres=# \q

18 дек. 2014 г.

SOAP 1C, связь Oktell и Итилиум

Как из Октела закинуть информацию о телефонных звонках в Итилиум? Веб-запрос с GETами на php-скрипт, который дергает SOAP от 1С.
<pre>
<html>
<title>Itilium input call</title>
<?php
// http://localhost/itil/?Date=1&EventKind=2&ch1=3&ch2=4&cid1=5&cid2=6&id1=7&id2=8&descr=9
echo '<table>';
echo '<tr><td>Date</td><td>' . htmlspecialchars($_GET["Date"]) . '</td></tr>';
echo '<tr><td>EventKind</td><td>' . htmlspecialchars($_GET["EventKind"]) .'</td></tr>';
echo '<tr><td>cid1</td><td>' . htmlspecialchars($_GET["cid1"]) . '</td></tr>';
echo '<tr><td>cid2</td><td>' . htmlspecialchars($_GET["cid2"]) . '</td></tr>';
echo '<tr><td>descr</td><td>' . htmlspecialchars($_GET["descr"]) . '</td></tr>';
echo '</table>';

$client = new SoapClient("http://server/ITIL/ws/IT_AsteriskEvent/?wsdl",
array('login' => "user",'password'=> "12345",
                 'soap_version' => SOAP_1_1,'trace' => 1,
                 'exceptions' => false,'encoding'=>'utf-8'));
//print(var_dump($client->__getFunctions())."<br/>");
try
{
$client->Event(array('Date'=>htmlspecialchars($_GET["Date"]),
                     'EventKind'=>htmlspecialchars($_GET["EventKind"]),
                     'ch1'=>htmlspecialchars($_GET["cid1"]),
                     'ch2'=>htmlspecialchars($_GET["cid2"]),
                     'id1'=>htmlspecialchars($_GET["cid1"]),
                     'id2'=>htmlspecialchars($_GET["cid2"]),
                     'cid1'=>htmlspecialchars($_GET["cid1"]),
                     'cid2'=>htmlspecialchars($_GET["cid2"]),
             'descr'=>htmlspecialchars($_GET["descr"])
));
//echo "REQUEST:<br/>" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastRequest())) . "<br/>";
//echo "RESPONSE:<br/>" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastResponse())) . "<br/>";
}
catch (SoapFault $exception) 
{
    var_dump($exception->getMessage());
} 
?>
</html>
</pre>

12 нояб. 2014 г.

rsyslog & loganalizer in OpenSUSE

1. Install OpenSUSE. So,I'm installed 13.2 with LXDE.
2. Install rsyslog rsyslog-module-mysql from standard repositories (and remove systemd logger in same time)
3.Install MariaDB, phpMyAdmin, Apache2, mod-php5, php-mysql, php5-gd from standard repositories.
4.Enable apache2, mysql, rsyslog in services.
5. Run "mysqladmin -u root password newpass"

29 апр. 2013 г.

Excel из PHP

Есть система ведения распоряжений по курсам валют в обменниках. Обеспечивает ввод, печать, подтверждение курсов. Внезапно старшие товарищи решили нас осчастливить и обеспечить "автоматическую" загрузку курсов в Диасофт 5NT. Пришлось для получения требуемого к загрузке файла в формате MS Excel научиться изготавливать из CSV XLS.
 include_once "Spreadsheet/Excel/Writer.php";
 $xls =& new Spreadsheet_Excel_Writer();

 $name=$_GET['rasp'];
 $xls->send("KURS_".substr($name,0,3)."_".substr($name,7).".xls");
 $f = fopen($name, "rt") or die("Ошибка!");
 $sheet =& $xls->addWorksheet('Распоряжение');
 $format =& $xls->addFormat();
 $format->setColor("black");
 $dateFmt =& $xls->addFormat();
 $dateFmt->setColor("black");
 $dateFmt->setNumFormat("D MMMM,YYYY");
 $sheet->setColumn(0,5,20);
 for ($i=0; $data=fgetcsv($f,1000,","); $i++){
        $sheet->writeString(2, 0, "Филиал банка в г.Москве", $format);
        $sheet->writeString(4, 0, "Приказ № ".$data[0], $format);
        $sheet->writeString(6, 3, $data[2], $dateFmt);
        $sheet->writeString(12, 0, "Доллары США:", $format);
 $sheet->writeString(13, 0, "покупка -", $format);
 $sheet->writeString(13, 1, $data[3], $format);
 $sheet->writeString(13, 3, "продажа -", $format);
 $sheet->writeString(13, 4, $data[4], $format);
 $sheet->writeString(15, 0, "Евро:", $format);
 $sheet->writeString(16, 0, "покупка -", $format);
 $sheet->writeString(16, 1, $data[6], $format);
 $sheet->writeString(16, 3, "продажа -", $format);
 $sheet->writeString(16, 4, $data[7], $format);
 $sheet->writeString(18, 0, "Английские фунты стерлингов:", $format);
 $sheet->writeString(19, 0, "покупка -", $format);
 $sheet->writeString(19, 1, $data[9], $format);
 $sheet->writeString(19, 3, "продажа -", $format);
 $sheet->writeString(19, 4, $data[10], $format);
 $sheet->writeString(21, 0, "Швейцарские франки:", $format);
 $sheet->writeString(22, 0, "покупка -", $format);
 $sheet->writeString(22, 1, $data[12], $format);
 $sheet->writeString(22, 3, "продажа -", $format);
 $sheet->writeString(22, 4, $data[13], $format);
 $sheet->writeString(26, 1, "USD", $format);
 $sheet->writeString(26, 2, "EUR", $format);
 $sheet->writeString(26, 3, "GBP", $format);
 $sheet->writeString(26, 4, "CHF", $format);
 $sheet->writeString(27, 0, "USD", $format);
 $sheet->writeString(28, 0, "EUR", $format);
 $sheet->writeString(29, 0, "GBP", $format);
 $sheet->writeString(30, 0, "CHF", $format);
 $sheet->writeString(27, 1, "X", $format);
 $sheet->writeString(27, 2, $data[16], $format); //USD-EUR
 $sheet->writeString(27, 3, "0.00", $format);
 $sheet->writeString(27, 4, "0.00", $format);
 $sheet->writeString(28, 1, $data[15], $format); //EUR-USD
 $sheet->writeString(28, 2, "X", $format);
 $sheet->writeString(28, 3, "0.00", $format);
 $sheet->writeString(28, 4, "0.00", $format);
 $sheet->writeString(29, 1, "0.00", $format);
 $sheet->writeString(29, 2, "0.00", $format);
 $sheet->writeString(29, 3, "X", $format);
 $sheet->writeString(29, 4, "0.00", $format);
 $sheet->writeString(30, 1, "0.00", $format);
 $sheet->writeString(30, 2, "0.00", $format);
 $sheet->writeString(30, 3, "0.00", $format);
 $sheet->writeString(30, 4, "X", $format);
 $sheet->writeString(35, 0, $data[17], $format);
 $sheet->writeString(35, 3, $data[18], $format);
 $sheet->writeString(36, 0, $data[19], $format);
 $sheet =& $xls->addWorksheet('Приложение');
 $sheet->writeString(0,5,$data[2]);
 for($i=0;$i<3;$i++){
         $sheet->writeString($i+2,3,$data[1]); //time of the day
 }
 $sheet->writeString(2,5,"Ф-Л");
 $sheet->writeString(3,5,"ДО 1");
 $sheet->writeString(4,5,"ДО 2");

 }
        fclose($f);
 $xls->close();
 exit;