MySQLでデータをリストアする場合、slow_query_log を OFF にする方がいい場合
MySQL のデータベースをリストアに2日かかった原因を調べていたところ、slow_query_log_file に大量のログが書き出されていたことがわかった。
大量のデータを INSERT しているため、通常の long_query_time で設定している時間以上に SQL の実行に時間がかかっており、INSERT した SQL すべてがログに書き出されていた状態だった。その結果、書き出されたログファイルのサイズは 8GB を超過しており、ログに追記されるたびに巨大なファイルを更新するディスクIOが発生していたことが、処理に時間がかかる一員となっていた。
そのため、リストアが終わるまでは、
SET GLOBAL slow_query_log = 0;
を実行して、一時的に slow_query_log の書き出しを停止した。
[PHP][Wordpress] Wordpress をコマンドで管理する
SSH + 秘密鍵で運用しているサーバーで Wordpress 本体やプラグインを自動更新できる環境ではないため、コマンドで更新できる方法があったので試してみた。
phar 拡張モジュールは必須なので注意。
WP-CLI をインストール
インストール先には任意のフォルダでよいが、自分の場合は下記のようにディレクトリを作成して、インストール。
% mkdir -p ~/local/bin % curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1434k 100 1434k 0 0 995k 0 0:00:01 0:00:01 --:--:-- 995k
実行権限の付与と動作確認
% chmod u+x wp-cli.phar % php wp-cli.phar --info PHP binary: /usr/local/bin/php PHP version: 5.5.31 php.ini used: /usr/local/etc/php.ini WP-CLI root dir: phar://wp-cli.phar WP-CLI global config: WP-CLI project config: WP-CLI version: 0.22.0
公式ページでは wp-cli.phar を /usr/local/bin ディレクトリに移動して、wp というファイル名に変更している。
私の場合は、/usr/local/bin に wp というシンボリックリンクを作成してすませています。
root 権限がない場合は、ユーザーディレクトリに保存したままで、シェルにサーチパスを追加して、コマンドのパスを書かないで済むようにしても可。
Wordpress 本体の状態確認とアップデート
% wp core check-update Success: WordPress is at the latest version. % wp core update
プラグインの状態確認とアップデート
% wp plugin status 4 installed plugins: I akismet 3.1.7 I hello 1.6 A siteguard 1.2.5 A wp-multibyte-patch 2.5 Legend: I = Inactive, A = Active % wp plugin update
wp-cli.phar の使用方法について
% wp help
エクセルのセルにリンク設定された URL を抽出する
- リンクが設定された Excel のブックを開く。
- ALT + F11 で Microsoft Visual Basic for Application ウィンドウを開く。
- 挿入メニューから標準モジュールを選択する。
- 新規モジュールに後述するコードを張り付ける。モジュール名は任意につけていい。
- そして、URLを表示したいセルに次の function を記述し、リンクが設定されているセルを指定する。
Function exportURL(ByVal Target As Excel.Range) As String Application.Volatile On Error Resume Next exportURL = Target.Cells(1).Hyperlinks(1).Address End Function
例えば、A1 のセルに設定されたリンクの URL を表示したい場合は、任意のセルに、
=exportURL(A1)
と記述すれば、URLが表示される。
FuelPHP で PHPUnit が思うように動作しない [追記あり]
Windows 上で FuelPHP を使って PHPUnit を動作させると、次のようなエラーが発生する。
>php oil test Tests Running...This may take a few moments. 'fuel' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
調べて見たけれど、参考になる事例がみつからなかった。
ただ、
>php oil test --group=Core
と
>php fuel\vendor\phpunit\phpunit\phpunit --group=Core
は同じだということなので、しばらくは後者のコマンドを使って様子を見る。
参考
追記
下記のページを見ていて、PHPUnit を実行するときに php.exe の場所を示す記述をすれば、動作するのではないかと思い、試してみた。
fuel/app/config/oil.php
return array( 'phpunit' => array( //'binary_path' => 'fuel/vendor/phpunit/phpunit/phpunit' , // 下記の行に修正。 'binary_path' => PHP_BINARY . ' fuel/vendor/phpunit/phpunit/phpunit' , ), );
fuel/core/bootstrap_phpunit.php
defined('FUEL_START_TIME') or define('FUEL_START_TIME', microtime(true)); defined('FUEL_START_MEM') or define('FUEL_START_MEM', memory_get_usage()); // 下記 3行は「改定 FuelPHP入門」 P.265 に記載されていたコード。 // これらを削除して(テストは失敗する)が、ユニットテスト自体は PHP のエラーなく終了した。 //require VENDORPATH . 'autoload.php'; //require COREPATH . 'classes' . DIRECTORY_SEPARATOR . 'autoloader.php'; //class_alias('Fuel\\Core\\Autoloader', 'Autoloader');
Ruby 2.1.2 で debugger をインストールする
$ cd ~/ $ git clone https://github.com/mekishizufu/debugger.git $ cd debugger $ git checkout ca451a9bdf $ gem build debugger.gemspec $ gem install debugger-1.6.6.gem
Vagrant の Ubuntu 12.04 で bundle を実行したらエラーが出た対応策について
bundle でインストールをしたら、下記のエラーが発生した。
$ bin/bundle Fetching source index from https://rubygems.org/ Fetching git://github.com/gregbell/active_admin.git Retrying git clone 'git://github.com/gregbell/active_admin.git' "/home/vagrant/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/cache/bundler/git/active_admin-d67faab65e9b74efbc8efb4a777a851e9f78b2ca" --bare --no-hardlinks --quiet due to error (2/3): Errno::ENOMEM Cannot allocate memory - git clone 'git://github.com/gregbell/active_admin.git' "/home/vagrant/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/cache/bundler/git/active_admin-d67faab65e9b74efbc8efb4a777a851e9f78b2ca" --bare --no-hardlinks --quiet Retrying git clone 'git://github.com/gregbell/active_admin.git' "/home/vagrant/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/cache/bundler/git/active_admin-d67faab65e9b74efbc8efb4a777a851e9f78b2ca" --bare --no-hardlinks --quiet due to error (3/3): Errno::ENOMEM Cannot allocate memory - git clone 'git://github.com/gregbell/active_admin.git' "/home/vagrant/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/cache/bundler/git/active_admin-d67faab65e9b74efbc8efb4a777a851e9f78b2ca" --bare --no-hardlinks --quiet Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!
原因は swap ファイルがないからという話だったので、下記を実行。
$ sudo swapon -s Filename Type Size Used Priority $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 41283904 1655356 37531968 5% / udev 247604 12 247592 1% /dev tmpfs 50344 228 50116 1% /run none 5120 0 5120 0% /run/lock none 251712 0 251712 0% /run/shm vagrant 976401404 77485412 898915992 8% /vagrant $ sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k 262144+0 records in 262144+0 records out 268435456 bytes (268 MB) copied, 0.40044 s, 670 MB/s $ sudo mkswap /swapfile Setting up swapspace version 1, size = 262140 KiB no label, UUID=e0f56805-5dba-4b50-b5b7-344fc08af7ca $ sudo swapon /swapfile $ sudo swapon -s Filename Type Size Used Priority /swapfile file 262140 0 -1
ここからは nano で swap の設定をする。
$ sudo nano /etc/fstab
で、次の1行を追加する。
/swapfile none swap sw 0 0
そして、次を実行。
echo 10 | sudo tee /proc/sys/vm/swappiness echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf sudo chown root:root /swapfile sudo chmod 0600 /swapfile