VB6で作成したプロセスが終了できない
(;´д`) まる2日ハマってようやく解決。
続きを読むwebサービスからデコメールを送る
事前調査した資料集。
- 携帯各社のデコメールに関する公開情報
- ライブラリ
- テンプレート作成
Maillogに大量の謎のメッセージ
Nov 10 22:46:37 www sendmail[24636]: oAADkbbU024636: *****.com [127.0.0.1] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA Nov 10 22:47:34 www dovecot: imap-login: Disconnected: rip=::ffff:127.0.0.1, lip=::ffff:127.0.0.1, secured Nov 10 22:47:36 www dovecot: pop3-login: Disconnected: rip=::ffff:127.0.0.1, lip=::ffff:127.0.0.1, secured
こんなのが延々と/var/log/maillogを埋め尽くしてた。なんじゃこりゃ。と、探してみたら丁度同じ現象があった。
何かのプログラムが動いていると思う方が無難。
一体なんだ?と考えてみると、一つ心当たりが。。。
ZABBIXのAgentか!?
試しに止めてみると、大当たり!!
このサーバーもzabbixのagentが動いてる。
とりあえずpop/imapの監視は無くてもいいし、SMTPの監視は別の手段でやることにして監視をdenyにすることにしよう。
SQLServerExpressでタスクスケジューラーを使ったバックアップ方法
SQLServerExpressでのバックアップは多少テクニックを弄する必要があるっぽい。
なっちゃんのプログラミングTips: SQLServer Express版の自動バックアップ
基本的にはこのサイトの通りで、これに曜日ごとのバックアップを作るようにしてみた。
続きを読む動画から音声情報だけをバッチで取り出す
自分メモ。
@echo off ffmpeg -i "%~f1" -acodec copy "%~d1%~p1%~n1.aac"
動画のフォルダにaacで。
acodecがcopyになってるので拡張子アンマッチになるけどまぁそれはそれで。
なんか遅いZencart
ZenCart1.3.8aで運用しているサイトのパフォーマンスがなんとなく遅い。
というかかなり遅い。我慢ならんのでパフォーマンスチューニング。
とりあえずプロファイル
お約束のxdebug+WinCacheGrindで動作をプロファイリングしてみる。*1
全体の65%近い時間をinit_db_config_foreach_template_read.phpで占有されてる。
なんじゃいこりゃ。
init_db_config_foreach_template_read.php
{zenhome}/includes/init_includes/init_db_config_foreach_template_read.phpはこんなの
<?php if (!defined('IS_ADMIN_FLAG')) { die('Illegal Access'); } $template_dir = ""; $template_query = $db->Execute("select template_dir from " . TABLE_TEMPLATE_SELECT ." where template_language = 0"); $template_dir = $template_query->fields['template_dir']; $template_query = $db->Execute("select template_dir from " . TABLE_TEMPLATE_SELECT . " where template_language = '" . $_SESSION['languages_id'] . "'"); if ($template_query->RecordCount() > 0) { $template_dir = $template_query->fields['template_dir']; } $use_cache = (isset($_GET['nocache']) ? false : true ) ; $configuration = $db->Execute('SELECT configuration_key AS cfgkey, configuration_value AS cfgvalue FROM ' .TABLE_CONFIGURATION_FOREACH_TEMPLATE.' WHERE template_dir = "'.$template_dir.'"', '', $use_cache, 150); db_define($configuration); $configuration = $db->Execute('SELECT DISTINCT cfg_t.configuration_key AS cfgkey,cfg_t.configuration_value AS cfgvalue FROM '.TABLE_CONFIGURATION_FOREACH_TEMPLATE.' AS cfg_ft ,'.TABLE_CONFIGURATION.' AS cfg_t WHERE cfg_ft.template_dir<>"'.$template_dir.'"'); db_define($configuration); ?>
んー。見る所dbのconfiguration_foreach_templateテーブルとconfigurationテーブルから今の設定を読み込んでdefine()しているようだ。
ってことは、この2つのテーブルに変更がない場合はキャッシュすればいいんでね?
ってことでキャッシュを利用するよう最後のクエリを変更
$configuration = $db->Execute('SELECT DISTINCT cfg_t.configuration_key AS cfgkey,cfg_t.configuration_value AS cfgvalue FROM '.TABLE_CONFIGURATION_FOREACH_TEMPLATE.' AS cfg_ft ,'.TABLE_CONFIGURATION.' AS cfg_t WHERE cfg_ft.template_dir<>"'.$template_dir.'"','',$use_cache, 86400); // 24h
だいぶ早くなったな。
注意点
configureを変更するような設定変更をした場合、次のキャッシュ更新時期まで新しい設定が読み込まれないので、明示的にキャッシュをクリアする必要がある。
キャッシュ方法としてfileを選択*2していた場合はDIR_FS_SQL_CACHEのフォルダにあるzc_*.sqlを削除。
databaseを選択している場合はデータベースのdb_cacheテーブルのレコードをクリアすればOK。
これ運用時に忘れるといらぬバグを産みかねないから、本当はconfiguration_foreach_templateテーブルとconfigurationテーブルにトリガー仕掛けてdb_cacheを削除するようにすればいいんだよなぁ。
ううむ。