【PHP】下らねぇ質問はID出して書き込みやがれ 126at PHP
【PHP】下らねぇ質問はID出して書き込みやがれ 126 - 暇つぶし2ch116:nobodyさん
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();}


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch