让我们建立一个与电脑将棋软件对弈的服务器<第19部分>
上一篇文章的链接:http://qiita.com/muzudho1/items/6d7accac76f947d9ce58。
作ったプログラムを 相方に丸投げしたいので、マニュアルを書く必要があるんだが、どう書けばいいのか。
外側から触れる順に並べてみよう。
デプロイメントしにくいフォルダー階層だぜ……。まあ、37種類ほどのテストの数をこなしやすい用途のフォルダー階層なんで、本番向きに用意したものではない。
我想在一台服务器上部署这个四件套,但可能还需要一些库和其他环境。
-
- ERLANG
-
- RabbitMQ 3.6.6
-
- php-amqplib/php-amqplib 2.5.*
-
- Composer
curl
bcmath
libev-dev
Expect 5.45-7
PHP 7.0
Apache 2.4.18
啊,还有很多呢……以后再整理吧。我也希望能够方便地安装这些。你说要将其脚本化?也就是交给别人吧。只要写写说明书就可以了……。
启动方式
-
- インストール方法
-
- バージョン確認方法
-
- 起動方法
- 起動していることを確認する方法
有人在那里。 (You can also say “有个人在那里。”)
設定方法
-
- Apache と PHP をつなげるとこだけが難しい。自動化されてない。
-
- メッセージ・キュー名がハードコーディングされている。増やしたいときどうするのか。
- URLもハードコーディングされている。増やしたいときどうするのか。
コンパイル方法
- コンパイルなんかするのか。もっと汎用的なプログラムにした方がいいんじゃないのか?
原本默认已经包含了这个前提。
-
- apt
-
- g++
-
- mono 4.2.1
-
- nano
-
- grep
-
- make
- wget
これはキリがない。
消すもの
- PHP 5
そういえば、設定の煩雑さに ぶち切れて、PHP 5 とかいうものを OS から跡形も残さず抹消したんだった。
Ubuntu的更新
Ubuntu を 16.04、または最新版に更新します。
do-release-upgrade
開発者じゃないんだったら、g++ は要らないか。
make コマンドは多分、最初から入ってるだろう。インストールに使えるかもしれない。
浮かむ瀬(チャイルド4)は、デバッグ版じゃなくて リリース版を渡すように注意だな。
需要一个定距文件和一个评价值文件。
./apery bench
で、浮かむ瀬が 動いてるかどうか確認できることも マニュアルに書いておこう……、あっ! チャイルド4 では動かないや……。
美国国际学生组织
setoption name Minimum_Thinking_Time value 500
如果想将思考时间延长到0.5秒,需要在启动时进行设置。如果想在中途进行更改,则可以通过重新启动程序或者从源代码级别进行修改。
我没有使用bash。
開発者じゃなければ mono も要らないか。
さくらVPS では var/www/html がWebページのデフォルト階層。
やって当たり前かと思っていたんだが、
PHP のエラー表示対応とか、日本語対応とか、まったくしなくていいな……。
出てくるのは bestmove 2g2f とかなんで……。
日本語が欲しいのはエラーが出たときだけか。
mbstring.internal_encoding = UTF-8
你是否希望支持UTF-8编码?
安装PHP7。
apt-get -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring
安装php后将自动安装php7。安装php7后需要重新启动Apache服务器。
sudo /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.
RabbitMQ のインストール
以后可以参考自己写的文章。
安装 apt
RabbitMQ.Client.dll などをインストールするためのインストーラー。
apt install apt-file
apt-file update
安装用于客户端的 RabbitMQ。
apt-file search RabbitMQ.Client.dll
ただ、RabbitMQ.Client.dll は Windows / C# 用だろう。System.Messaging とか、本番で使うだろうか?
下载Erlang (阿兰)
或者,您是想整个传递压缩文件?
但是这是为 C# 和 System.Messaging 设计的吧。您是打算在生产环境中使用吗?
NuGet の使い方
これも本番の運用中では使わないんじゃないか?
C# 用 System.Messaging 用だろ。
Ubuntu での RabbitMQ のグレードアップの仕方
これは必要。
sudo apt-get update
sudo apt-get install rabbitmq-server
gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010
gpg -a --export 7638D0442B90D010 | sudo apt-key add -
wget -O- https://packages.erlang-solutions.com/debian/erlang_solutions.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install init-system-helpers socat esl-erlang
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install rabbitmq-server
启动RabbitMQ服务器
rabbitmq-server
请按下[Ctrl]+[Z]以停止。
bg 1
1是工作号码。
假设。
Composer を入れたい
由于这是为了创建PHP环境,所以请前往 /var/www/html 目录进行操作。
需要安装 PHP7,因为它需要使用 curl。
sudo apt-get install php-curl
sudo service apache2 restart
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
确认安装。
ls -an
创建了一个名为composer的隐藏文件,然后按照以下命令敲击。
composer
composer をインストールできていれば、PHPファイルを置きたいフォルダーに、composer.json ファイルを自分で作る。
nano composer.json
composer.json -> composer配置文件
{
"require": {
"php-amqplib/php-amqplib": "2.6.*"
}
}
在存在 composer.json 的地方
copmoser update
敲。还是不行吗?
安装 bcmath。
sudo apt install php7.0-bcmath
※パスワード入力
composer update
安装是先进行的吗?
composer install
重新启动Apache。
sudo service apache2 restart
重新检查自己的文章。
http://qiita.com/muzudho1/items/3ff3e8dfde0ff5bed203#_reference-96aadf48e98efd0298c7
我没有使用cron。
查看自己的文章。
http://qiita.com/muzudho1/items/3ca7bade03f7c2fd8292#_reference-3e659d58af3dcf8582f4
期望安装5.45-7版本的应用程序。
apt-get -y install expect
既に入っているかも。
自分の記事を見直す。
http://qiita.com/muzudho1/items/8f940f8b4c679c23a174#_reference-a78ee16b0c896c7d47ce
AMQP-CPP的意思是高级消息队列协议的C++实现。
「AMQP-CPP」(CopernicaMarketingSoftware/AMQP-CPP)是一个开源的C++库,用于处理AMQP(高级消息队列协议)的通信。该库提供了用于建立、发送和接收消息的函数和类,使开发者能够轻松地集成AMQP协议到他们的应用程序中。完整的源代码和文档可以在GitHub上找到,地址为https://github.com/CopernicaMarketingSoftware/AMQP-CPP。
需要下载并安装吗?
# make
# make install
# make pure
安装libev-dev
sudo apt-get update
sudo apt-get install libev-dev
重新审视自己的文章。
http://qiita.com/muzudho1/items/1432040086218e14ebe2#_reference-a80ce71e0ed6ad5c0197
自分の記事を見直す。
http://qiita.com/muzudho1/items/798dfbf267340f3801e1#_reference-1a747e743b7ff0dbb050
自分の記事を見直す。
http://qiita.com/muzudho1/items/6fbe1681a7e14dcac3f2#_reference-d57789b2016536e29156
查看自己的文章。
重新查看自己的文章。
自分の記事を見直す。
http://qiita.com/muzudho1/items/90eec636fc1664dbfcee#_reference-99a929aad0b8a250b719
ニコ動の動画が見れなかったのでクロームのキャッシュをクリアーしたからか、Qiitaへの投稿が 400番台エラーになって無駄になった。
まあいいか。
让我们将文件夹结构改为正式版本。
最好把它们整理到一个目录中吧。 (Zuì bǎ ba.)
メモ書き
開発中ネームを適当にきめる。
shogi
あんまりなので shogi1s にするか。(1秒未満の指し手→shogi 1 second)
sasite1s の方がいいか?
/var/www/html/sasite1s/
|
+--- ukamuse_sdt4_child5.php
# これにアクセスすると、bestmove 2g2f などを返す
/usr/games/sasite1s/
|
+--- ukamuse_sdt4_sasite1s/
|
+--- reservation.expect
|
+--- reservation.exe
|
+--- bin
|
+--- apery
|
+--- apery.out.log
|
+--- apery.err.log
|
+--- 20161007
|
+--- KKP_synthesized.bin
|
+--- KK_synthesized.bin
|
+--- KPP_synthesized.bin
メッセージキュー
"To_UkamuseSdt4_Sasite1s" →浮かむ瀬SDT4(sasite1s用)
"From_UkamuseSdt4_Sasite1s" ←浮かむ瀬SDT4(sasite1s用)
パッケージ
|
| # Webアプリケーション
+--- Apache 2.4.18
| |
| +--- curl ------+
| | |
| +--- bcmath ----+
| |
| +--- Composer
| |
| +--- PHP 7.0
|
|
| # 外部プロセス操作
+--- Expect 5.45-7
|
|
| # プロセス間通信
+--- libev-dev
|
+--- ERLANG 19.3
|
+--- RabbitMQ 3.6.6
|
+--- php-amqplib/php-amqplib 2.5.*
だいぶ 詰めてきたか?
プロセス
|
+--- RabbitMQ Server
|
+--- ./apery
とりあえずリネームしよう。
是否应该将源代码分发到生产环境中呢?
把代码放在Git Hub或Bit Bucket上是个好主意。
不太清楚是否应该将源代码放在生产环境中。难以确定最佳做法。
等等
我可以把配置文件放在etc目录下吗?如果可以的话,我会使用它。
設定ファイル
/
|
+--- etc/sasite1s.d/
|
+--- IpAddress.txt
# (2017-03-23 Comment)要らないのでは。
这样真的可以吗?
(2017-03-23评论)我并没有硬编码IP地址之类的东西。这不是必要的吗?
将文件夹权限设为可写,移动文件。
将下一个可执行文件的权限更改为可执行。
-
- reservation.expect
-
- reservation.exe
- bin/apery
在保存源代码时,请确保使用带有 UTF-8 BOM 的编码方式,通过文本编辑器进行操作。
如果有问题的话,改行也想要替换成适用于Linux的,但不一定要做。
启动改造版的浮游车载系统。
./apery --enqueue From_UkamuseSdt4_Sasite1s durable --dequeue To_UkamuseSdt4_Sasite1s durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null &
不需要提供RabbitMQ的启动方法。
哎呀?无法执行了。
# ./apery
Killed
-rwxr-xr-x 1 ★user ★user 1601896 Mar 22 23:43 apery
我们要不要检查一下容量呢?
测试环境
# ls -l
total 1576
drwxr-xr-x 2 root root 4096 Mar 12 07:09 20161007
-rwxr-xr-x 1 root root 1601896 Mar 21 02:33 apery
-rw-r--r-- 1 root root 0 Mar 21 04:17 apery.err.log
-rw-r--r-- 1 root root 0 Mar 21 04:17 apery.out.log
-rw-r--r-- 1 root root 1531 Mar 12 05:48 benchmark.sfen
Benchmark.sfen是否是必备品?
正式环境
# ls -l
total 1576
drwxrwxr-x 2 ★user ★user 4096 Mar 22 23:43 20161007
-rwxr-xr-x 1 ★user ★user 1601896 Mar 22 23:43 apery
-rw-r--r-- 1 root root 0 Mar 23 00:43 apery.err.log
-rw-r--r-- 1 root root 0 Mar 23 00:43 apery.out.log
-rw-rw-r-- 1 ★user ★user 1539 Mar 23 00:48 benchmark.sfen
容量不一样。换行有问题吗?
测试环境
# ls -l
total 837616
-rw-rw-r-- 1 ★user ★user 81251424 Mar 22 23:44 KKP_synthesized.bin
-rw-rw-r-- 1 ★user ★user 52488 Mar 22 23:43 KK_synthesized.bin
-rw-rw-r-- 1 ★user ★user 776402496 Mar 22 23:46 KPP_synthesized.bin
实际环境
root@tk2-217-18401:/usr/games/sasite1s/ukamuse_sdt4_sasite1s/bin/20161007# ls -l
total 837616
-rw-rw-r-- 1 ★user ★user 81251424 Mar 22 23:44 KKP_synthesized.bin
-rw-rw-r-- 1 ★user ★user 52488 Mar 22 23:43 KK_synthesized.bin
-rw-rw-r-- 1 ★user ★user 776402496 Mar 22 23:46 KPP_synthesized.bin
評價值文件似乎沒有變化。
# ps aux | grep apery
root 19584 0.3 48.1 1613836 489540 ? Sl Mar21 10:33 ./apery --enqueue 1113 durable --dequeue 1112 durable autodelete
root 30305 0.0 0.0 12936 984 pts/1 S+ 01:17 0:00 grep --color=auto apery
测试环境上能否启动第二个?
# ./apery --enqueue From_UkamuseSdt4_Sasite1s durable --dequeue To_UkamuseSdt4_Sasite1s durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null &
[1] 30327
# jobs
[1]+ Killed ./apery --enqueue From_UkamuseSdt4_Sasite1s durable --dequeue To_UkamuseSdt4_Sasite1s durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null
好像无法使用这个参数启动。
# ./apery --enqueue 1115 durable --dequeue 1114 durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null &
[1] 30362
# jobs
[1]+ Killed ./apery --enqueue 1115 durable --dequeue 1114 durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null
为什么不能启动呢?或者为什么会立即崩溃呢?
因为本地主机的端口号5672连接了测试环境吗?
但是,我们会为发送和接收分别建立多个连接。
同时,在一个端口上打开多个通道也是常见的用法。
什么情况下会发生「Killed」?
top
top - 01:41:18 up 18 days, 4:23, 1 user, load average: 0.05, 0.10, 0.08
Tasks: 104 total, 2 running, 102 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 1017748 total, 94708 free, 756804 used, 166236 buff/cache
KiB Swap: 1046524 total, 38520 free, 1008004 used. 103964 avail Mem
8169 rabbitmq 20 0 2704848 26396 1744 S 0.7 2.6 18:59.95 beam.smp
13211 www-data 20 0 352576 10096 4300 S 0.7 1.0 0:00.22 apache2
30710 root 20 0 40516 1988 1380 R 0.7 0.2 0:01.45 top
19584 root 20 0 1613836 489660 1180 S 0.3 48.1 10:39.92 apery
28688 root 20 0 0 0 0 S 0.3 0.0 0:01.26 kworker/0:2
1 root 20 0 37560 2468 1312 S 0.0 0.2 3:46.25 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.60 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:27.75 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 4:41.36 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 6:10.87 rcuos/0
9 root 20 0 0 0 0 S 0.0 0.0 0:48.06 rcuos/1
猴猴(Apery)是否使用了大约48%的内存呢?
Apery 的 USI_Hash 默认为 256MB,最大可达 1024 * 1024 MegaByte,即 1 Tera Byte。
如果这个比例是48%,那么内存大约有2Tera Byte吗?
KiB Swap: 1046524
看到这个表达,可以认为发生了大约1 GB的交换吗?
USI_Hash
将其从256减少到64会怎么样呢?
8169 rabbitmq 20 0 2707928 28324 1768 S 0.7 2.8 19:14.44 beam.smp
31262 root 20 0 1482308 148332 2916 S 0.3 14.6 0:01.73 apery
31374 root 20 0 40516 1992 1380 R 0.3 0.2 0:00.02 top
1 root 20 0 37560 2468 1312 S 0.0 0.2 3:46.56 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.60 kthreadd
再启动后大约有14.6%。如果开始考虑这个问题,会增加大约34.5%左右,大约是三分之一的增长率。
31262 root 20 0 1482472 659364 1700 S 1.0 64.8 0:07.06 apery
8169 rabbitmq 20 0 2705360 25784 1620 S 0.7 2.5 19:20.15 beam.smp
714 memcache 20 0 378776 12004 0 S 0.3 1.2 5:31.89 memcached
715 mysql 20 0 1302112 524 0 S 0.3 0.1 38:47.58 mysqld
11959 root 20 0 351884 8324 8048 S 0.3 0.8 3:51.47 apache2
31623 root 20 0 40516 1992 1384 R 0.3 0.2 0:00.03 top
1 root 20 0 37560 1164 580 S 0.0 0.1 3:46.70 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.60 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:27.78 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
USI_Hash 被设定为 128,但奇怪的是内存却增加到了 64.8%。
启动测试环境的备忘录
不断进行更新导致内容过时,但还是写下现在的内容。
────────────────────────────────────────
二重起動防止
============
# ps aux | grep apery
# プロセスがいくつ起動しているか確認できる
# ps aux | grep php
# 競合するサンプル・プログラムが走ってなければOK。
浮かむ瀬(テスト用)の起動<その1>
====================================
# cd /home/★user/shogi/ukamuse_sdt4_child4/bin
# ./apery --enqueue 1113 durable --dequeue 1112 durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null &
浮かむ瀬(テスト用)の起動<その1>の確認
==========================================
# jobs
[1]+ Running ./apery --enqueue 1113 durable --dequeue 1112 durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null &
※起動後、30秒ぐらい経ってから次のステップを始めた方が usiコマンドの応答が正常に返ってくるようだ。(原因不明、状況不明)
浮かむ瀬(テスト用)の起動<その2>
====================================
# /home/★user/shogi/csharp_service/tamesi34_cs.exe 2> /home/★user/shogi/csharp_service/tamesi34_cs.err.log
Delete ? >
[Enter] ※何も入力せず [Enter]キーだけ押す。
Enqueue ? >
1112
Enqueue ? >
3
Dequeue ? >
1113
Dequeue ? >
1
Enqueue? >
usi
※数秒して、次のような応答が返ってくればok(一例)
<-------- [interrupt!] Dequeue(^q^) id name ukamuse_SDT4
id author Hiraoka Takuya
option name Best_Book_Move type check default false
option name Book_File type string default book/20150503/book.bin
option name Byoyomi_Margin type spin default 500 min 0 max 2147483647
option name Clear_Hash type button
option name Draw_Ply type spin default 256 min 1 max 2147483647
option name Engine_Name type string default ukamuse_SDT4
option name Max_Book_Ply type spin default 32767 min 0 max 32767
option name Max_Random_Score_Diff type spin default 0 min 0 max 32600
option name Max_Random_Score_Diff_Ply type spin default 32767 min 0 max 32767
option name Min_Book_Ply type spin default 32767 min 0 max 32767
option name Min_Book_Score type spin default -180 min -32601 max 32601
option name Minimum_Thinking_Time type spin default 20 min 0 max 2147483647
option name Move_Overhead type spin default 30 min 0 max 5000
option name MultiPV type spin default 1 min 1 max 594
option name OwnBook type check default true
option name Slow_Mover type spin default 89 min 1 max 1000
option name Slow_Mover_10 type spin default 10 min 1 max 1000
option name Slow_Mover_16 type spin default 20 min 1 max 1000
option name Slow_Mover_20 type spin default 40 min 1 max 1000
option name Threads type spin default 2 min 1 max 256
option name Time_Margin type spin default 4500 min 0 max 2147483647
option name USI_Hash type spin default 256 min 1 max 1048576
option name USI_Ponder type check default true
usiok
※usiokの応答が返ってこなければ、動いていない。(原因不明、状況不明)
※aperyのジョブをkillし、起動からやり直すこと。
※プロンプトはでないので、usiokを目印に続けて打ち込む。
setoption name USI_Hash value 128
※ ハッシュサイズ
※ デフォルトで 256 だが、サーバーのメモリの 48% を使ってしまって 2台起動できない。
※ そこで半分の 128 にしてみよう。
※ 応答はない
Enqueue? >
isready
※3.6秒ほどかかる
※10秒経っても反応がなければ、起動中に失敗か?
readyok
エラーログの確認
================
# nano /home/★user/shogi/ukamuse_sdt4_child4/bin/apery.err.log
# nano /home/★user/shogi/csharp_service/tamesi34_cs.err.log
────────────────────────────────────────
8169 rabbitmq 20 0 2705872 16588 1504 S 1.0 1.6 19:41.75 beam.smp
32006 root 20 0 1875684 801608 1680 R 0.7 78.8 0:11.87 apery
1 root 20 0 37560 976 448 S 0.0 0.1 3:47.19 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.61 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:27.82 ksoftirqd/0
当将USI_Hash设置为512时,仅增加了78.8%。
8169 rabbitmq 20 0 2706896 6856 1468 S 1.7 0.7 19:43.25 beam.smp
32644 root 20 0 1416932 553580 1664 S 0.7 54.4 0:02.40 apery
11959 root 20 0 351884 8 0 S 0.3 0.0 3:52.00 apache2
1 root 20 0 37560 1048 564 S 0.0 0.1 3:47.21 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.61 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:27.82 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 4:43.54 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 6:13.31 rcuos/0
即使将 USI_Hash 设置为 64 MB,它仍会占用 54.4% 的内存吗?
8169 rabbitmq 20 0 2706384 16576 1460 S 0.7 1.6 19:45.29 beam.smp
310 root 20 0 40516 1992 1384 R 0.3 0.2 0:00.03 top
32732 root 20 0 1384164 591988 1736 S 0.3 58.2 0:02.45 apery
1 root 20 0 37560 1056 584 S 0.0 0.1 3:47.27 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.61 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:27.82 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 4:43.66 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 6:13.40 rcuos/0
9 root 20 0 0 0 0 S 0.0 0.0 0:48.48 rcuos/1
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
即使将USI_Hash设置为32 MB,也使用了58.2%的内存(/_\)
# jobs
[1]- Running ./apery --enqueue From_UkamuseSdt4_Sasite1s durable --dequeue To_UkamuseSdt4_Sasite1s durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null & (wd: /usr/games/sasite1s/ukamuse_sdt4_sasite1s/bin)
[2]+ Killed ./apery --enqueue 1113 durable --dequeue 1112 durable autodelete > ./apery.out.log 2> ./apery.err.log < /dev/null
在测试环境版本中,似乎当第二个实例被启动时会导致它被终止。
真是让人困扰啊。
预订程序
# /usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.exe --enqueue From_UkamuseSdt4_Sasite1s durable --dequeue To_UkamuseSdt4_Sasite1s durable autodelete
コマンドライン引数の「--queue 送信先キュー名 寿命」を漏れなく指定してください。
例: --queue 1113 durable autodelete
寿命は可変個数設定可能「durable」「autodelete」「passive」「exclusive」
name_queue=[]
哎呀,我把命令行参数弄错了。
# /usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.exe --queue To_UkamuseSdt4_Sasite1s durable autodelete
queueName = "To_UkamuseSdt4_Sasite1s"
messages = 0
consumers = 1
写作如下。
预订期望
# /usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect --queue To_UkamuseSdt4_Sasite1s durable autodelete
/usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect: line 1: #!/usr/bin/expect: No such file or directory
/usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect: line 2: $'\r': command not found
: No such file or directory_sdt4_sasite1s/reservation.expect: line 3: cd: /usr/games/sasite1s/ukamuse_sdt4_sasite1s
/usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect: line 4: $'\r': command not found
/usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect: line 6: $'\r': command not found
/usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect: line 7: spawn: command not found
/usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect: line 8: $'\r': command not found
": no such file or directorye =
": no such file or directory =
": no such file or directorys =
哎呀,“#!/usr/bin/expect:找不到该文件或目录”
执行方式有所不同吗?
# expect /usr/games/sasite1s/ukamuse_sdt4_sasite1s/reservation.expect --queue To_UkamuseSdt4_Sasite1s durable autodelete
啊,expect 不是一个可执行文件,而是一个命令!
ukamuse_sdt4_sasite1s.php 文件搞错了。
-
- × tamesi37a1.php.txt
- 〇 tamesi26a5.php.txt
由于原始的源代码错误,需要进行修正。
如果不安装composer的话
Warning: require_once(/var/www/html/sasite1s/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/sasite1s/ukamuse_sdt4_sasite1s.php on line 5
Fatal error: require_once(): Failed opening required '/var/www/html/sasite1s/vendor/autoload.php' (include_path='.:/usr/share/php') in /var/www/html/sasite1s/ukamuse_sdt4_sasite1s.php on line 5
那么,
cd /var/www/html/sasite1s
前往那个地方,
nano composer.json
敲击并创建文件。
composer.json 的中文释义是”composer的配置文件”。
{
"require": {
"php-amqplib/php-amqplib": "2.6.*"
}
}
# composer install
虽然出现了一种看起来像错误的提示,但加载需要一些时间才会开始,所以请耐心等待大约一分钟左右。
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing php-amqplib/php-amqplib (v2.6.3) Downloading: 100%
Writing lock file
Generating autoload files
# ls -l
total 20
-rw-r--r-- 1 root root 65 Mar 23 04:22 composer.json
-rw-r--r-- 1 root root 3040 Mar 23 04:23 composer.lock
-rw-rw-r-- 1 csg10 csg10 6258 Mar 23 04:19 ukamuse_sdt4_sasite1s.php
drwxr-xr-x 4 root root 4096 Mar 23 04:23 vendor
如果有一个名为 vendor 的文件夹,则表示可以在 PHP 中使用包了,准备就绪。
从浏览器
http://★サイトアドレス/tamesi26a5.php?sfen%20lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL%20b%20-%201%20moves
在中国访问。屏幕上显示
error = "busy" busy = 1
然而,当查看页面源代码时
error = "busy"
busy = 1
已经换行了。好的。还有一条信息留着。
# rabbitmqctl list_queues
Listing queues ...
1112 1
amq.gen-6X-aAcq9ZPaEA4RZwkLz_A 0
1113 0
To_UkamuseSdt4_Sasite1s 0
From_UkamuseSdt4_Sasite1s 0
1112有1个待处理事项,但To_UkamuseSdt4_Sasite1s一个也没有。
难道是去错了地方?
去看的地方走错了。正确的是
http://★サイトアドレス/sasite1s/ukamuse_sdt4_sasite1s.php?sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1 moves
好。
将嵌入在 ukamuse_sdt4_sasite1s.php 中的所有消息队列名称重新编写。
网址 zhǐ)
有点什么
http://★サイトアドレス/sasite1s/ukamuse_sdt4_sasite1s.php?
这个名字感觉太过小心谨慎了。
http://★サイトアドレス/sasite1s/ukamuse_sdt4.php?
可以这样吗?
顺便说一下,我尝试着执行了一些技巧。
# ./release
usi
id name Gikou 20160606
id author Yosuke Demura
option name BookMaxPly type spin default 50 min 0 max 50
option name ByoyomiMargin type spin default 100 min 0 max 10000
option name DrawScore type spin default 0 min -200 max 200
option name FischerMargin type spin default 12000 min 0 max 60000
option name MinBookScoreForBlack type spin default 0 min -500 max 500
option name MinBookScoreForWhite type spin default -180 min -500 max 500
option name MinThinkingTime type spin default 1000 min 10 max 60000
option name MultiPV type spin default 1 min 1 max 700
option name NarrowBook type check default false
option name OwnBook type check default true
option name SuddenDeathMargin type spin default 60 min 0 max 600
option name Threads type spin default 2 min 1 max 64
option name TinyBook type check default false
usiok
isready
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
好像出现了 std::bad_alloc 异常。
# ./apery
Killed
# ./apery bench
Killed
这个改版的浮出水面的孩子4可能是因为内存使用的方式太重了吗?