13/02/07 23:05:56.17 A8KJX1dY
javascript でSocket.IOを使い
var socket = io.connect("URLリンク(xx.amazonaws.com",) {port: 9000});
socket.on('join', function(data) { message(data);});
とし、データを受信している箇所があります。
このデータ受信をphpで行うにはどうしたらよいでしょうか?
WebSocket phpでググっても、phpをサーバー側として使う例はあるのですがクライアント側としてデータを受信する方法は見つかりませんでした。
117:nobodyさん
13/02/07 23:18:30.23
curlでもつかえば?
118:nobodyさん
13/02/08 00:26:20.05 YGN757hi
えーと、普通にcurlでgetしても"Welcome to socket.io."と表示されて接続が終わってしまいます。
それにこのurlはチャットの様なもので、継続的にデータを流してくるurlなので
curlで一度アクセスしてデータ受信しておしまい というのはちょっと違うと思うのですが・・・。
119:nobodyさん
13/02/08 00:44:32.88
PHPでsocket使ってTCP扱えるから
ゴリゴリ書くとか
あまり現実的ではないけど
120:nobodyさん
13/02/08 02:00:49.54
websocket php client でぐぐった一番上
URLリンク(github.com)
socket.io php client でぐぐった一番上
URLリンク(stackoverflow.com)
> クライアント側としてデータを受信する方法は見つかりませんでした。
使ったことないからわからないので、↑に該当してたらごめんね
121:nobodyさん
13/02/08 02:02:29.79
php-websocketの中身みたがclientとserver両方入ってたっぽいけどよく見てないからわからない
122:116=118
13/02/08 03:16:35.35 YGN757hi
php-websocketは以前から試してたけど、クライアント側はjsでやってるらしいんですよ。
で、あれこれやってて出来ました。お騒がせしました。
直接URLリンク(xx.amazonaws.com:9000)にアクセスしてもダメって所を勘違いしてました。
123:nobodyさん
13/02/08 10:14:02.44
>>113
うるう秒を扱えるOSで、うるう秒の設定を正しく行なっていれば
mysql, perl とも以下のURLで示された、これまでうるう秒を実施した
時刻付近を正しく表示できます。
URLリンク(jjy.nict.go.jp)
mysqlの場合
select from_unixtime('1341100823');
select from_unixtime('1341100824');
select from_unixtime('1341100825');
select from_unixtime('1341100826');
124:nobodyさん
13/02/08 10:16:43.18
2009年の場合
URLリンク(jjy.nict.go.jp)
125:nobodyさん
13/02/08 11:03:08.39
perl同様のテストを行うとこうなります。
./test.pl
2012-07-01 08:59:59
2012-07-01 08:59:60
2012-07-01 09:00:00
2012-07-01 09:00:01
Mysqlでも同様の結果です。
PHPでは、タイムゾーンを自前でもっていてしかもそれが不完全なので
うるう秒の処理を正しく行うことができないのです。
何らかの回避策を探している状況です。
126:116=118
13/02/08 13:01:34.51 YGN757hi
2012-07-01 08:59:59
2012-07-01 08:59:60
2012-07-01 09:00:00
2012-07-01 09:00:01
それぞれunixTimeはなにを返すの?
127:nobodyさん
13/02/08 13:17:00.80
その部分だけmysqlから持ってくるとかじゃあかんのけ
128:nobodyさん
13/02/08 14:07:25.26
>>126
URLリンク(www.andr0o0id.com)
129:nobodyさん
13/02/08 14:28:06.37
>>126
それぞれとはなんのことですか?
環境によって返ってくる値は違ってきます。
うるう秒が正常に機能しているなら
1341100823
1341100824
1341100825
1341100826
でしょうか。
このへんはぐぐればでてくると思いますが。
130:nobodyさん
13/02/08 14:31:28.42
URLリンク(mail.python.org)
131:nobodyさん
13/02/08 15:08:01.45
shell の場合
% date -r 1341100823
2012年 7月 1日 日曜日 08時59分59秒 JST
date -r 1341100824
2012年 7月 1日 日曜日 08時59分60秒 JST
date -r 1341100825
2012年 7月 1日 日曜日 09時00分00秒 JST
date -r 1341100826
2012年 7月 1日 日曜日 09時00分01秒 JST
%
132:nobodyさん
13/02/08 15:34:56.06
ライブラリレベルで作ればいいな
133:nobodyさん
13/02/08 15:46:10.37
現在までの合計挿入秒は25秒らしいけど
PHPで作られたシステムが25秒早くなるってわけじゃないし別によくね?
134:nobodyさん
13/02/08 15:50:03.29
>>133
他がまともな場合には、25秒づれた時刻になります。
また、ある時点からある時点まで何秒経過したかも
正確に計算できない問題もあります。
135:nobodyさん
13/02/08 15:54:06.01
サーバ側の時計と同期してんじゃないの?
136:nobodyさん
13/02/08 15:56:48.82
まともにleapsecs(うるう秒)を扱える言語の例 python の場合
ソース
#!/usr/local/bin/python
import time
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1341100823)))
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1341100824)))
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1341100825)))
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1341100826)))
実行結果
2012-07-01 08:59:59
2012-07-01 08:59:60
2012-07-01 09:00:00
2012-07-01 09:00:01
137:nobodyさん
13/02/08 15:59:57.59
うるう秒を扱えるシステムと扱えないシステムでunixTimeは互換性が無いのか
138:nobodyさん
13/02/08 16:01:34.06
PHPの限界
139:nobodyさん
13/02/08 16:04:35.53
まともにleapsecs(うるう秒)を扱えない言語の例 php の場合
ソース
#!/usr/local/bin/php
<?
date_default_timezone_set('Asia/Tokyo');
print(date('c',1341100823)."\n");
print(date('c',1341100824)."\n");
print(date('c',1341100825)."\n");
print(date('c',1341100826)."\n");
?>
結果
2012-07-01T09:00:23+09:00
2012-07-01T09:00:24+09:00
2012-07-01T09:00:25+09:00
2012-07-01T09:00:26+09:00
140:nobodyさん
13/02/08 16:09:14.92
x扱えない
o扱わない
141:nobodyさん
13/02/08 16:13:33.83
>>137
互換性がないというか、、、
うるう秒を扱えるシステム で かつ きちんと設定された場合は unixtimeの値は正常なものです。
うるう秒を扱えないシステムのunixtimeは不正な値になっているのです。
142:nobodyさん
13/02/08 16:17:00.86
せめて +25になる UTC設定しろよw
143:nobodyさん
13/02/08 16:19:38.89
>>142
もしかして、php内のタイムゾーンの定義ファイルをいじればOKということでしょうか?
その程度の手間で済むなら問題解決です。
144:nobodyさん
13/02/08 16:41:39.45
>>142
UTCにしてみたけど25秒のズレは改善しませんでした。
145:nobodyさん
13/02/08 16:43:33.31
なんかの勘違いだね
146:nobodyさん
13/02/08 16:49:10.99
>>145
やっぱりそうですか。
UTCの結果
2012-07-01T00:00:23+00:00
2012-07-01T00:00:24+00:00
2012-07-01T00:00:25+00:00
2012-07-01T00:00:26+00:00
147:nobodyさん
13/02/08 17:28:04.55
>>137
URLリンク(jjy.nict.go.jp)
148:nobodyさん
13/02/08 21:46:55.52
>>136
ちなみになんだけど、その文字列を何に使うの?ログファイルに書くためとか?
149:nobodyさん
13/02/09 00:13:26.32
馬鹿は黙ってろ
150:nobodyさん
13/02/09 04:01:28.57
犯罪者予備軍の巣窟PHPスレ
151:nobodyさん
13/02/09 04:29:40.41
>>149
なんで?気になるじゃん。フォーマットした文字列をどう使うかはこの際重要なことだと思うんだ。
152:nobodyさん
13/02/09 11:34:01.33 9zP2+VX5
【OS名】--
【PHPのバージョン】5.3.19
【連携ソフトウェア】--
【質問内容】
割と基本的な内容かもしれんけど…
staticな functionで宣言された、localな変数って、
これ関数callされるたびに再定義されるよね?
普通にスコープ解釈すると、そうなる気がするんだけど。
こんなものがいっぱいあるなら、クラス内でstaticに持っちゃう方が、メモリは消費しても早そうだよね。
arrayで、初期化してる中身は同じものが、staticな関数毎に宣言されてんだけどさ。
153:nobodyさん
13/02/09 12:19:44.04
>>152
はやいかどうかはベンチとってから言えゴミクズ
「ぼくのかんがえたりろん」はブログに書いてろ池沼
154:nobodyさん
13/02/09 13:30:38.55
バーカ、今ベンチ取るコードつっこんでんだよw
おまえらみたいな池沼webコーダが糞コード量産すっから、
火が付いたprojectがこっちに流れてきて迷惑してんだよカスw
155:nobodyさん
13/02/09 15:24:35.95
池沼webコーダって何ですか?
156:nobodyさん
13/02/09 16:26:06.86
変にうるう秒にこだわると、JavaScriptとの時刻関係の連携がウンコになる。
157:nobodyさん
13/02/09 17:56:07.07
インターフェースを実装したクラスって
タイプヒンティングでインターフェースの方を指定した場合上手く動きますか?
158:nobodyさん
13/02/09 17:56:47.15 n2j9+GQ7
すみません、ID出し忘れました
インターフェースを実装したクラスってタイプヒンティングでインターフェースの方を指定した場合、適切に動作しますか?
159:nobodyさん
13/02/09 18:04:12.06
ZF2がそうなので動くんじゃないかな
160:nobodyさん
13/02/09 18:50:32.06
>>158
書き込む前に一目メール欄を確認することすらできないキチは失せろ
161:nobodyさん
13/02/09 21:19:27.58 eCGJr15A
一度に複数の関数を抜けるにはどうしたらよいでしょうか。
function main(){
sub();
}
function sub(){
while(fgets()){
ほにゃらら
}
次の処理ほげほげ
}
function fgets2(){
//ここでエラーが起きる
}
main();
たとえばこのコード、sub()の中でfgets2を呼び出していますが、このfgets2の中でエラーが起きた時に次の処理ほげほげ も飛ばしてreturnさせたいです。
while(fgets()){
を
$a=fgets();
if($a==false){return:}
while($a){
とか書けばできなくはないですが、fgets2を呼び出す所に毎回これを書くのは手間ですので
fgets2の中で一気にmainまで抜ける という事を指定したいです。continue 2;みたいな感じで。
gotoは関数を抜ける事も出来ないみたいですし
162:nobodyさん
13/02/09 22:09:07.69
>>161
php try catch
163:nobodyさん
13/02/10 00:13:31.59
staticなメソッドって作らない方がいいの?
164:nobodyさん
13/02/10 00:24:34.01
>>1
165:nobodyさん
13/02/10 10:05:09.21
function main(){
sub();
}
function sub(){
for($i=0;$i<10;$i++)subsub($i);
}
function subsub($i){
if ($i == 5)throw new Exception('なんか');
print $i;
}
try {
main();
} catch(Exception $ex){print $ex->getMessage();}