【PHP】下らねぇ質問はここに書き込みやがれ 8 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/15(水) 00:41:22.79ID:ko4BTSP20
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
http://www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 7
http://echo.2ch.net/test/read.cgi/tech/1478657006/

次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/06/03(土) 19:15:54.54ID:vHC5ipdf0
>>328
ありがとうございます。
ずっと文字化けだと思っていました。
解決できました。
2017/06/09(金) 21:35:08.67ID:itsdSOhir
ftp関数ってftp関数の使用が許可されているサーバーから許可されていないサーバーに通信できるの?
さくらインターネットはftp関数使えないけど、使えるサーバーからさくらに接続できる?
2017/06/09(金) 22:47:35.09ID:ltTPD1ZbM
受け入れる側が許可してないと何やっても繋がらんよ
ftpdのプロセスが立ち上がってて、かつ必要なポート番号が開いてる必要がある
アクティブモードかパッシブモードかによって色々変わる
さくらのサーバ側がどうなってるか確認すれば良い

繋げる側は通信が外に出ていければだいたい大丈夫
もちろんftpプロトコルで通信できる環境は必要だが
2017/06/10(土) 00:10:31.61ID:0tXhVGnur
>>331
つまりftpソフトで繋がるサーバーならphpのftp関数とは関係なく大丈夫ってことですかね

繋げる側はエックスサーバーでやってみて大丈夫でした!
2017/06/10(土) 01:01:48.16ID:nnTfCPYs0
>>332
繋ごうとする側にFTPクライアントかFTP関数的なものが必要ということだよ
何のファイルを送受信するか分からんけど、
素のFTPだと暗号化されてないから注意せよ
今の時代ならSFTPとかSCPとか使う方が安全
2017/06/10(土) 06:16:39.22ID:0tXhVGnur
>>333
ああ、そうなんですね。
だとすると繋ごうとする先のレンタルサーバーを確認しないとダメですね。
うーん、仕様を確認してわかるものなのか…。

ちなみに送受信するのはhtmlやcssファイルです。
自分のサーバー(ftp関数を実行して繋ぐ側)はエックスサーバーで決まりなんですが、
ftp関数で繋ぐ先のサーバーはいろんなホスティング会社のサーバーです。
ロリポやさくらなどのレンタルサーバー会社。

ftpソフトで繋げられるからといってphpのftp関数でも繋げられるとは限らないということですね。
2017/06/10(土) 11:06:58.62ID:nnTfCPYs0
>>334
XServerはPHPがほぼ最新だし、
ftp_connect系の関数も基本は標準で入ってるはず
FTPプロトコルは接続時のお作法がサーバの設定によって色々変わるから大変だと思うが頑張って
2017/06/10(土) 12:10:45.46ID:0tXhVGnur
>>335
ありがとうございます!
ちょっと他のサーバーを仮契約して試してみます!
2017/06/12(月) 02:02:20.17ID:9HEIoQd30
>>336
> ftpソフトで繋げられるからといってphpのftp関数でも繋げられるとは限らない
普通につながるから安心していいよ

つなぐ先のサーバのphpにftp関数があるかどうかは関係ない
2017/06/12(月) 11:13:25.44ID:9bwuxRECr
>>337
そうなんだ!
昨日からいくつかサーバー確認しはじめたけど、それがわかるならテストしなくていいから助かります!
2017/06/12(月) 21:29:01.90ID:HwT26Y2zM
いや、テストはした方がいいよ
そりゃ、たいていは繋がると思うが
ポート番号とかモードの設定とかサーバ側の設定次第で色々調整が必要になることはある
2017/06/13(火) 00:13:35.53ID:MT1aMd9/0
ちなみにだけど不正アクセスには使ったらあかんよ
2017/06/13(火) 09:25:25.23ID:onzjies9r
>>339
ポート番号とかモードはユーザーが設定できるようにしてるので大丈夫かな

>>340
そういう目的じゃないので…
逆に不正アクセスできないように配慮はしてるつもり
342デフォルトの名無しさん (ワッチョイ 15db-55DC)
垢版 |
2017/06/13(火) 11:59:39.85ID:y4mccwa90
画像ファイルをアップロードして一覧表示するプログラムを作成していて、
iOS端末だけ保存ファイル名が取れないのですが原因わかりますでしょうか。

formから以下の記述で取得してもすべてimage.jpgにリネームされて
複数アップロードしてもぜんぶ同じ画像になってしまいます。

index.html
<form name=“upform" method="post" action=“test.php" enctype="multipart/form-data">
<input type="file" name="uploadfile[]" multiple>


test.php
$_FILES["uploadfile"]["name"]

よろしくお願いします。
343デフォルトの名無しさん (ワッチョイ e511-Z3xB)
垢版 |
2017/06/13(火) 16:22:16.49ID:e75WWAwz0
APIを作りたいんですが
codeigniterとかフレームワークを使うのってへんですか?
2017/06/13(火) 17:07:34.26ID:3KAtKhUpH
>>343
・そこそこの数のAPIを作る
・認証が必要
・自前でCSRFとかの対策だるい
・自前でルーティングするのだるい
とかなら、フレームワークおすすめ。

ただ、フルスタックのでかいフレームワークじゃなくて、マイクロフレームワークと呼ばれる
のを調べてみるといいよ。
LumenとかSlimとかSilexとか。
2017/06/13(火) 20:13:16.36ID:If/p8sdd0
>>343
変じゃない。
>>344が書いてるようにフレームワーク使った方が楽。
LumenやSlimもいいんだけど、マイナーだからなにか問題起こると
ググっただけでは答えが見つからないこともある。
初心者だったらメジャーなフレームワーク選ぶといいよ。
最近シェア落としてるけどcakeでいいと思う。
エラーメッセージそのままコピペしてググれば、ほぼ答えが出てくる。
2017/06/14(水) 01:10:32.29ID:7F7xS9xRp
ありがとうございます!
2017/06/14(水) 14:12:06.77ID:gEXW+PhK0
かなりひさしぶりにPHP触るんだけど今ってテンプレートエンジンは何が熱い?
昔は、smartyが遅いからsmarty記述法と互換性がある自作エンジンを作ってやってたんだけど
最近熱いエンジンのソースコードが見たくなった
2017/06/14(水) 14:13:39.40ID:gEXW+PhK0
「自作エンジンを作って」ってなんか頭痛が痛いみたいだ
気にしないでw
2017/06/14(水) 14:20:31.94ID:/XZF9UoWH
その自作エンジンでええやん
2017/06/14(水) 14:44:27.06ID:M56szTyh0
質問失礼します。
php7でサーバプログラムを作成中です。

HttpsRequestでデータを受けとってレスポンス、そのデータをWebSocketで別クライアントに返すという機能を実装したいのですが、
両方のポートで待ち受けるようなプログラムって実装可能なんでしょうか?
(1つのポートでも構いませんが、、、)

php7 + Apache で色々試したり、フレームワークのSilexを入れて試したりしましたが、
これってつまりプロセス間通信だったり、なにかしらのストレージに入れないと無理ですよね?
2017/06/14(水) 15:38:38.63ID:/XZF9UoWH
>>350
HTTPリクエストを受け取って処理する部分は、待ち受けする必要ないでしょ
リクエストを受け取って、何か処理して、WebSocketサーバにデータを送信する
WebSocketのサーバもPHPで書きたいなら、そこでは当然接続を待ち受ける必要がある
2017/06/14(水) 15:57:19.95ID:M56szTyh0
>>351
WebSocketは待ち受けて、HttpRequestは待ち受けない(Apatchまかせ)のであれば、データをWebSocketでクライアントに送信する際、確実にストレージなりを利用する事になります。
今回それをやりたく無いので、両方同じクラス内で待ち受けて処理できれば、クラス内の一時メモリを使いまわせるのになぁ。
と思った次第です。Silexで試した理由はそれです。
2017/06/14(水) 16:03:38.60ID:/XZF9UoWH
>>352
> データをWebSocketでクライアントに送信する際、確実にストレージなりを利用する事になります。
え?なんで?
a.phpがHTTPリクエストを処理したなら、a.phpからWebSocketサーバはsocket通信だよ?
2017/06/14(水) 16:10:17.81ID:/XZF9UoWH
>>352
読み間違えてた
a.php: Apacheから呼び出される何かのリクエストを処理するコード
WebSocketサーバ:あるポートで待ち受ける、WebSocketプロトコルをしゃべるサーバ

のとき、a.phpはWebSocketクライアントだよ?
2017/06/14(水) 16:11:37.43ID:M56szTyh0
>>353
という事は、a.phpが呼ばれたらlocalhostに接続して送信切断という流れなんですね。
確かにそれでも可能です。
後から要件追加して申し訳ないですが、a.phpが短時間に大量に実行されるので、できれば接続と切断は繰り返したくないのがあります。
2017/06/14(水) 16:16:39.58ID:M56szTyh0
今試したら、WebSocketのsocket_acceptでHttpRequestを受け取れました。
httpもsocketも同じtcpだからacceptするんですね。目から鱗でした。
接続と切断を繰り返してしまいますが、これしかないですかねぇ。。。
2017/06/14(水) 16:18:14.83ID:/XZF9UoWH
>>355
ちょっとまってくれよ
HTTPリクエストを捌くのはmustなの?そうじゃないの?
短時間に大量のリクエストってどれくらい?100req/sec?10000req/sec?
2017/06/14(水) 16:19:03.30ID:/XZF9UoWH
>>356
つか、WebSocketが何者だか理解してるか?
2017/06/14(水) 16:19:16.79ID:3zsLXGHk0
まるで同一サーバで別プロセスが同一ポートでLISTENしているかのような書き方だけど、どこかに隠し情報があるんだろうなぁ
2017/06/14(水) 16:21:41.56ID:gEXW+PhK0
>>349
他言語ばっかやっててPHP書くのなんて久しぶりだから
最近の流行りもののソースコードを何となく見てみたくなるんだよw
そこで自分が全く知らない新しい事を見つけたら嬉しくならない?
2017/06/14(水) 16:24:58.32ID:mnieIMJY0
海外レンタルサーバーを借りたのですが
○○○.com/ にアクセスると
○○○.com/?i=1
というように、すべてのurlに ?i=1がくっついてくるのですが、これを取り払うには htaccessに何と書けば良いのでしょうか?
それとも他に方法がありますでしょうか?
2017/06/14(水) 16:29:06.69ID:3zsLXGHk0
>>360
どのくらい久しぶりなのかによるけど、改めてsmarty使ってみたら?
「smarty遅い」といってもいろんな理由があるので、使う側の問題で遅いということもある。

他のエンジンがいいならbladeとかtwigとか。
もっとも、やっぱり自作最高やってなりそうな人にも見えるので、やるだけ損かもしれない。
2017/06/14(水) 16:30:12.68ID:M56szTyh0
>>357
同時接続2000人が想定のチャットサーバ書いてます。

WebSocketの処理でhttpのパケットを解析しようかとも考えたのですが、a.phpを叩いてもらって、
そこから接続切断する方が楽そうですね。。。

ブラウザからのhttp requestをWebSocketで受けたらデータが汚すぎて萎えました。
(接続と切断を2〜3回繰り返す。。。)
2017/06/14(水) 16:33:39.90ID:/XZF9UoWH
>>360
> 最近の流行りもののソースコードを何となく見てみたくなるんだよw
見たいんならさっさと見ろ
2017/06/14(水) 16:35:46.52ID:/XZF9UoWH
>>363
だーかーらー、そのチャット中にHTTPリクエストを捌くのは必要なの?不要なの?
いらないんじゃないの?
2017/06/14(水) 16:40:37.12ID:2WK2RY/D0
>>364
>>360みたいな人には何言っても無駄だよ。
「〜したい」「〜やりたい」と言うだけで実際には何もしないし出来ない。
そういう奴は相手しないこったね。
2017/06/14(水) 16:40:41.43ID:M56szTyh0
>>365
http request内のデータが取得できるのであれば、なんだって大丈夫です。
なのでmustではないという事になりますかね。
2017/06/14(水) 16:40:42.09ID:/XZF9UoWH
WebSocketでチャットとかありがちで、ググればサンプルも死ぬほどあるだろうけど、
たとえは、これ http://qiita.com/hosomichi/items/66b309a6c3c20d910218
チャットそのものは、JavascriptとWebSocketサーバがやりとりする
WebSocketサーバは、別に何で実装してもいい
もちろん、最初のページはHTTPリクエストで取得する

このラインでいいの?駄目なの?
駄目だとしたら、何が必要なの?
2017/06/14(水) 16:48:14.61ID:M56szTyh0
>>368
少し祖語があるみたいです。
http request発行者はクライアントではなく中核サーバーになります。
(上でブラウザで試したというのはクライアントを模してやったわけではなく、単なるテストとしてやりました)
今書いているコードはクライアントと中核サーバーとの中継サーバーのものです。
中核サーバーのコードは修正できません。
そこからhttp requestでメッセージが飛んでくるんです。
そういう意味ではhttp requestを捌くのはmustですね。。。
2017/06/14(水) 16:58:29.14ID:/XZF9UoWH
>>369
やっと、どんなものか輪郭が見えたよ

> そういう意味ではhttp requestを捌くのはmustですね。。。
だったら、多数回の接続・切断は必要だということじゃないかな

まぁ、これ以上、俺からは何も言えないけど、ひとつだけ言えるとしたら、
最初に戻って、複数のポートで待ち受けできるかどうかだけど、できるよ
http://php.net/manual/ja/function.socket-select.php
2017/06/14(水) 17:02:24.05ID:M56szTyh0
>>370
おお!
パッと見どうやって使うのか、まだよく理解できていませんが、貴重な情報ありがとうございます!
言葉足らずですいませんでした。
2017/06/14(水) 17:06:01.29ID:/XZF9UoWH
>>371
実際PHPで使ったことないから、ほんとにできるかどうかは不明
できなかったらごめんね

PHPのサンプルは見つからなかったけど、select()はこんな感じで使える
http://totofuga.hateblo.jp/entry/2014/09/05/174554
2017/06/14(水) 17:08:42.57ID:2WK2RY/D0
同時接続2000人ってかなりデカいサービスなので数限られる。
動画配信が一番可能性高いけど、そういう仕事やってるとこは・・・。
まさか会社から2chに繋げてないよね?
知り合いの会社の社員のような気がしてきたw
2chに書き込むとインフラとセキュリティにメールが飛ぶとこもあるぞ。
気をつけなされ。
2017/06/14(水) 17:10:02.55ID:3zsLXGHk0
>>372
> 実際PHPで使ったことないから、ほんとにできるかどうかは不明
> できなかったらごめんね

普通のソケットプログラミングとほぼ同じだよ
2017/06/14(水) 19:32:47.41ID:gEXW+PhK0
>>362
bladeとtwigありがと

smartyはこういうところが変わった
bladeはここがいい
今一番伸びてるのはtwigだ
そういうレスを期待してたんだけどね

なんかグダグダ余計な事言ってるアホが居るから消えるわ

>>366
なんだその決め付けはw
2ch脳も大概にしてくれや
面倒くせぇやつだな
376デフォルトの名無しさん (ワッチョイ 9a88-y0cV)
垢版 |
2017/06/15(木) 00:40:42.03ID:yD3vPxkF0
アフィリエイトのリンクはクリックしたら広告先のURLに移動しますが、
PHPでアフィリエイトリンクからクリック先のURLを取得する方法はないでしょうか?
(つまり、クリックせずに正規のURLが取得したい)
get_headers($url)は無理でした
2017/06/15(木) 00:52:33.37ID:orz99gKc0
>>376
通常はクリックするアクションでGetやPostを要求し、
サーバー側の処理により移動先サイトのURLを受けとることになる

だから、クリックしないと無理じゃないかな
2017/06/15(木) 01:04:52.89ID:orz99gKc0
もしもHTMLソースに埋め込む様な形でリンクが張ってあるなら
ソースを読んで該当箇所を探し、取得する事は出来るかも知れない
2017/06/15(木) 05:45:49.72ID:teBxPoyNr
アフィリリンクはたいていリダイレクトしてるから無理じゃないかな
2017/06/15(木) 08:48:34.30ID:3zpPLTtW0
head要求とか?
381デフォルトの名無しさん (ワッチョイ 3aed-g/RG)
垢版 |
2017/06/19(月) 14:11:01.90ID:JoeiF6VU0
【OS名】Win10
【PHPのバージョン】 5.6.30
【連携ソフトウェア】MySQL XAMPP
PHP5技術者認定初級の公式教本(2014年9月20日発行)を読みながら勉強をしてる全くの初心者です。
データベースを作成、接続する部分でつまづいてしまいました。データベース、ユーザーの作成を行い

<meta charset = "UTF-8">
<?php
require 'MDB2.php';
$db = MDB2::connect('mysql://user名:passlocalhost/データベース名');
if(PEAR::isError($db)){
die ("接続失敗:" . $db->getMessage());
}else{
echo "接続できました。";
}

を実行、「接続失敗:MDB2 Error: connect failed」と返ってきます。
PHP5.3以降でMDB2_1.4以降を利用するためにはエラー制御、またはMDB2ドライバのbeta版インストールが必要とのことなのでbeta版のインストールをしました。
この手順に失敗があったのか確認する方法がわからず、とりあえずpaer listで確認したところ、
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE VERSION STATE
Archive_Tar 1.4.3 stable
Console_Getopt 1.4.1 stable
MDB2 2.5.0b5 beta
MDB2_Driver_mysql 1.5.0b4 beta
PEAR 1.10.4 stable
Structures_Graph 1.1.1 stable
XML_Util 1.4.2 stable
と表示されました。
データベース接続のため、アドバイスをいただきたいと思います。
足りない情報などもあると思いますが、宜しくお願いいたします。
2017/06/19(月) 14:28:03.46ID:4/2FI0cI0
・'mysql://user名:passlocalhost/データベース名' の内容が間違ってる
・MySQLが起動してない

あたりのオチでは?
そもそも今MDB2を使うメリットって皆無だと思うからPDOを勉強した方が良いと思うけど
2017/06/19(月) 14:29:02.12ID:Ce38C9l/H
>>381
最初のアドバイスとしては、MDB2はもう未来がないからPDOにしとけってこと
2017/06/19(月) 14:29:28.56ID:Ce38C9l/H
かぶったw
2017/06/19(月) 16:11:35.81ID:6320K+Ej0
10年前に終ってるものを今さら引き合いに出すなってw
2017/06/19(月) 16:46:26.99ID:4/2FI0cI0
2014年発行の本でMDB2をとりあげた理由ってなんだろう

PHP5.3系の古いバージョンのPDOだと
文字コードの指定ができないという致命的な欠点があったけどその関係だろうか?
そこまで踏み込んで解説されてるのであれば別に良いけどね

恥ずかしながら
「一般社団法人 PHP技術者認定機構」なんてものがある事を初めて知ったw
実務でどれくらい役に立つんだろうねこれ
2017/06/19(月) 17:27:56.89ID:7bEKAPau0
>>381
PHP5技術者認定初級の公式教本って
オライリージャパンの「初めてのPHP5 増補改訂版」かな?
原書の方は Final Release Date: June 2004ってある。
日本語翻訳で追補しているかも
7章の13辺りからPDOでの操作が載っているようだから、
その辺と読み替えてみたらどうだろう
2017/06/19(月) 20:39:06.96ID:2foBmcl+0
2014年でMDB2なんて使う必要性ゼロだったと思う
当時でもPDOもしくはmysqliのどっちかしか推奨されてなかった気がする
その本はすぐに捨てて2015年以降に発刊された本を買い直した方がいい
できればPHP7に対応してるやつ
2017/06/19(月) 21:49:59.12ID:7bEKAPau0
この本から出題されるらしいから、それは無理だと思う
390デフォルトの名無しさん (ワッチョイ 87cd-hHqA)
垢版 |
2017/06/19(月) 21:50:08.46ID:LhGzpkui0
つか、phpなんてググるだけでいいだろ
教本なんていらんのや!
2017/06/19(月) 21:58:44.96ID:7bEKAPau0
真面目な修行僧に失礼な!
2017/06/20(火) 02:19:52.47ID:iK2sGPi10
目的はPHPの試験に受かりたいってこと?
なら動かさなくてもいいじゃん、暗記だけでいいと思うよ
正直、もうほとんど使われてないライブラリだから
実際には大して役に立たない
試験受かったら新しめの本買って学び直せ
393デフォルトの名無しさん (ワッチョイ f723-Udsw)
垢版 |
2017/06/28(水) 23:04:51.83ID:7cLKB0Py0
PHPや他言語で、JSのconsole.log();みたいに
オブジェクトや配列を▼ボタンで折りたたみ/展開できる
デバッグ方法ない?
2017/06/28(水) 23:07:31.32ID:8ccEp+RW0
>>393
それブラウザの機能だから
2017/06/29(木) 08:09:11.69ID:IUqqYZb20
Laravel使ってdd()
396デフォルトの名無しさん (ブーイモ MMed-p+6f)
垢版 |
2017/06/29(木) 17:16:58.19ID:olsHrbVIM
多次元配列どうしの結合で教えてくださいませ。
以下のようなそれぞれの配列を、
Array1
(
[0] => Array
(
[key1] => 1
[key2] => 2
)

Array2
(
[0] => Array
(
[key3] => 1
)

このように1つの配列にまとめたい場合はどのようにすればいいでしょうか。
Array
(
[0] => Array
(
[key1] => 1
[key2] => 2
[key3] => 1
)

よろしくお願いします。
2017/06/29(木) 18:00:57.13ID:/ne8B1aHa
[array_merge(Array1[0],Array2[0])]
398デフォルトの名無しさん (ブーイモ MMed-p+6f)
垢版 |
2017/06/29(木) 19:19:10.78ID:olsHrbVIM
>>397
できました、ありがとうございます!
2017/06/30(金) 01:31:07.59ID:xquLJ6q20
$Array1[0] + $Array2[0] でもok
400デフォルトの名無しさん (ブーイモ MM62-p+6f)
垢版 |
2017/06/30(金) 14:43:54.43ID:IOmACzTvM
質問させてください。
条件分岐で結果の数が多い場合、
if文でネストする以外にいい方法はありますでしょうか。

配列の同じキーの値を、1〜5つ前まで順にたどって、
同じ値が続いていたら続いたぶんの数を新たに配列に入れたいと考えています。

よろしくお願いします。
401デフォルトの名無しさん (ワッチョイ c2cd-0bL8)
垢版 |
2017/06/30(金) 15:29:51.48ID:xquLJ6q20
foreachで回してカウントすればいいのでは?
2017/06/30(金) 15:57:18.21ID:rakscAnxa
>>400
同じキーの値ってどういうこと?
二次元配列?
ネストしてていいから一回コード見せてくれると助かる
2017/06/30(金) 16:18:07.71ID:EFdSifWf0
>>400
エスパーで答えるとarray_count_values()を使えば解決する気がする
404  (ブーイモ MM62-p+6f)
垢版 |
2017/06/30(金) 18:59:07.63ID:IOmACzTvM
もろもろレスありがとうございます。

>>402
いまこんな感じです。
配列allDataのhogeValue値をもとに、
1件前との差分値がdiffValueに入っており、
zeroOneに下がったか上がったかのフラグ値が0or1で入ってます。

実際は5連続まで判定したいのでネスト足りてませんが、
以下のコードは配列allDataのzeroOneキーを3つ前までたどって、
0が続いた場合に連続してます値をzeroCheckキーにPushしてます。

いまは5連続までですが、最終的に7くらいまで増える可能性があります。

if($allData[$i - 1]["zeroOne"] == 0) {
if($allData[$i - 2]["zeroOne"] == 0) {
if($allData[$i - 3]["zeroOne"] == 0) {
$allData[$i]["zeroCheck"] = "4連続";
} else {
$allData[$i]["zeroCheck"] = "3連続";
}
} else {
$allData[$i]["zeroCheck"] = "2連続";
}
} else {
$hairetsu[$i]["zeroCheck"] = "1回目";
}
405  (ブーイモ MM62-p+6f)
垢版 |
2017/06/30(金) 19:00:51.81ID:IOmACzTvM
>>402
まとめて送信できなかったので、配列は以下の通りです

配列:$allData
Array
(
[0] => Array
(
[id] => 1
[hogeValue] => 9594
[diffValue] => 0
[zeroOne] => 0
[zeroCheck] => 0
)
[1] => Array
(
[id] => 2
[hogeValue] => 9494
[diffValue] => -100
[zeroOne] => 0
[zeroCheck] => 1回目
)
2017/06/30(金) 19:15:45.47ID:EFdSifWf0
array_column($allData, 'zeroOne');

'zeroOne'の値だけ抜き出した配列を別に作ってそれをforeach()あたりで回してチェックすればいいだけな気がするが
何か勘違いしてたらすまない
※array_column()はPHP5.5以上でしか使えないから注意。仮に使えなくても自分で作れるよね?
2017/06/30(金) 19:29:33.71ID:cIeri8pZa
>>404
途中で1が出てきたら打ち切り?継続?
例えばzeroOneが0,0,1,0,0の順番だった場合はどうなるの?
2017/06/30(金) 19:32:52.91ID:cIeri8pZa
>>404
あとその5とか7ってのは$allDataの長さなの?
それとも要素数が100でも最初の5つだけ見るって話?
$allDataの要素数が5未満になる可能性は考えなくていい?
2017/06/30(金) 19:38:09.13ID:R3qh0H/X0
いまいち何がしたいのか不明な部分が多いが

$zero = array();
foreach ($allData as $k => $v) {
 if ($v['zeroOne'] === 0) {
  $zero[] = $v['id'];
 }
}

で'zeroOne'の値が0になってる'id'だけを収めた配列$zeroを作れば分かりやすいんじゃない?
410  (ブーイモ MM62-p+6f)
垢版 |
2017/06/30(金) 19:41:09.28ID:IOmACzTvM
>>406
PHPのバージョンは大丈夫です。

array_columnで抜き出してforeachで回したとして、
そこで連続してるかどうかの判定は同じような条件分岐が必要ですよね?

ちなみに上記のコードは配列全件($allData)をfor文で回してる中のコードなので結局同じのような気が…$iがそのfor文の変数です。

if文の数珠つなぎ以外で書ける方法がないか知りたいんですが、
わかりにくくてすいません。
411  (ブーイモ MM62-p+6f)
垢版 |
2017/06/30(金) 19:54:02.55ID:IOmACzTvM
>>407
1が出ても処理は継続します。
いまのとこ1が出てきたら適当な値を入れて全件最後まで回してます。

>>408
5とか7は要素の長さとかではなく、
「同じ値が何連続まで続いているか」の判定回数です。

要素は全件見ます、いままだ100件ほどですが。
要素は今後増えるので5未満は考えてません。

>>409
ありがとうございます、検証してみます。
412デフォルトの名無しさん (ワッチョイ 2d2d-Vkm7)
垢版 |
2017/06/30(金) 20:48:04.60ID:jM2/iqY60
とりあえず殴り書いてみた
$zeroCount = 0;
foreach($allData as &$data){
if($data['zeroOne'] === 1 ){
$zeroCount = 0;
$data['zeroCheck'] = 'reset';
}elseif($data['zeroOne'] === 0){
++$zeroCount;
$data['zeroCheck'] = $zeroCount===1 ? '1回目' : $zeroCount.'連続';
}
}
unset($data);
413  (ブーイモ MMed-p+6f)
垢版 |
2017/07/03(月) 12:23:07.80ID:B+GGE7aBM
>>412
すいません、レス遅くなりました。
試してみます、ありがとうございます!
414  (ブーイモ MMed-p+6f)
垢版 |
2017/07/03(月) 12:35:32.09ID:B+GGE7aBM
>>412
おぉ、まさに望んでいた処理ができました!
ありがとうございます!
2017/07/03(月) 19:17:40.49ID:JHZQFGt10
質問失礼します。
WebSocket サーバーを php で作成したのですが、Linux のコマンドラインから実行するとフリーズします(当たり前ですが)
php hogehoge.php(エンター押したらフリーズ)
フリーズしないようにするにはどう書けば良いのでしょうか?
分かる方、よろしくお願いします。
2017/07/03(月) 21:32:52.53ID:gkI5GTRGM
最後に&付けてバックグラウンドにするとが、
デーモン化するとかじゃないの?
2017/07/03(月) 21:46:40.38ID:gkI5GTRGM
screenとかtmuxとか使える環境にした方がいいかもね
2017/07/04(火) 13:26:39.98ID:7V16igb5M
>>415
それフリーズちゃうw
そんなんでソケット通信やって大丈夫なの?
2017/07/04(火) 13:27:40.09ID:1MjQBQYF0
最後に&を付ける事で解決しました。
このやり方は知りませんでした。
ありがとうございます。
2017/07/04(火) 13:31:25.48ID:1MjQBQYF0
>>418
なんて呼んだら良いか分からないです。
正式名称はなんて言うのですか?
2017/07/04(火) 13:37:48.03ID:7V16igb5M
>>420
実行中?w
2017/07/04(火) 14:10:34.27ID:Ij02Usie0
処理をバックグラウンドに回してるだけだから、
最後はちゃんとフォアグラウンドに戻して終了するとか、
PIDみてkillするとかしないとダメだからな
2017/07/04(火) 15:05:16.21ID:jjyWg722H
>>422
SIGHUPで自動的に終了する場合もあるけどね
2017/07/04(火) 16:29:15.13ID:vUvZYSdca
フォアグラウンドで待受してる状態をフリーズと呼んでたのか成程
2017/07/04(火) 16:43:25.58ID:1MjQBQYF0
rcスクリプト書いて、
service hogehoged start
で起動するようにしました。

スクリプト内で
php hogehoge.php --pidfile=/var/run/hogehoge.pid &
という風に起動しています。

pidfile は hogehoge.php 内部で getmypid() を保存しています。

kill はそのrcスクリプト内で stop 命令の時にやっています。

案の定、起動直後に [ OK ] が表示されませんが、不都合は無さそうなのでとりあえずこれで良しとしています。
2017/07/04(火) 16:55:30.44ID:Ij02Usie0
サーバーいじれる立場ならSupervisorとか使えば
PIDの管理とかいちいちしなくても簡単にできるよ
2017/07/04(火) 17:01:51.07ID:jjyWg722H
>>425
そのやり方だと、ターミナル閉じたら終わっちゃう環境もあるよ
2017/07/04(火) 17:32:02.24ID:1MjQBQYF0
>>426
ありがとうございます。
調べてみます。

>>427
マジですか。。。
ターミナル閉じて終わらないか確認しておきます。
幸いターミナルを起動するPCは1つだけなので、それで終わらなければ、、、
良い、、、ですよね、、、
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況