【PHP】下らねぇ質問はID出して書き込みやがれ 116
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2012/02/26(日) 11:49:58.54ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 115
http://kohada.2ch.net/test/read.cgi/php/1327005803/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0809nobodyさん
2012/03/15(木) 15:16:25.75ID:???0810nobodyさん
2012/03/15(木) 15:18:42.36ID:???後から1部分だけ修正したいのですが
手作業でやるとすごく時間がかかりそうです。
ループとかで修正する方法を
教えてください。
0811nobodyさん
2012/03/15(木) 15:20:45.37ID:???0813nobodyさん
2012/03/15(木) 15:38:57.17ID:???0814nobodyさん
2012/03/15(木) 15:44:03.66ID:???0815nobodyさん
2012/03/15(木) 15:48:56.56ID:jMy7vPK6PHPで実行すると何にも出力されない。
関数変えたりスクリプトを読み込ませたりしてみたんだがうまくいかん。
PHPからエラーも出力されない。
シェル上では問題ないんだけどなあ。
似たような現象に心当たりがある人、ヒントください。
0817nobodyさん
2012/03/15(木) 16:27:22.41ID:VUkqieq6その配列の文字コードを後から変更したいと思います。
一度に大量の文字列を配列に入れると
メモリエラーになるのですが、memory_limitの数値を増やす以外に
解決策はないのでしょうか?
0818nobodyさん
2012/03/15(木) 16:50:38.81ID:???0821nobodyさん
2012/03/15(木) 17:34:31.07ID:???0822nobodyさん
2012/03/15(木) 17:35:01.22ID:VUkqieq6memory_limitの上限値までです。
現在はパフォーマンス測定みたいなことをやってまして、
1行1000文字でどのくらいまで配列に代入出来るか?をテストしています。
出来るだけどのサーバでも使えるようなソースの書き方をしたいと思い、
memory_limitの設定に依存しないようなプログラミングを勉強しています。
とりあえず、条件としては>>817ですが、メモリ不足に陥らない方法が
あったら教えて欲しいと思い、質問しました。
0823nobodyさん
2012/03/15(木) 17:35:46.00ID:VUkqieq6逆に文字コード変更するなら一旦、配列に代入しなければ行けない
と言う事なら、それで納得します。
0824nobodyさん
2012/03/15(木) 17:40:52.25ID:???0826nobodyさん
2012/03/15(木) 17:54:15.76ID:???メモリの容量に依存せず大容量ななんらかのものをつかませておきたいなら
自分でPager組んでそっちに逃がすとか、強引だけど、一旦なんらかのDBに逃がしちゃうとか。
当然パフォーマンスはガタ落ちだけど、言ってしまえばメモリを無視するというわけだから
副記憶装置に押し付けるしかないっぺ。
0827nobodyさん
2012/03/15(木) 17:56:40.71ID:RuJGZOGk0828nobodyさん
2012/03/15(木) 18:16:52.96ID:???spprintf(&buf, 0, "%.15s%ld%ld%0.8F", remote_addr ? remote_addr : "", tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
ハッシュ前のベースは、IPと時間と乱数で文字列つくってるだけだね。
あとは、session.entropy_fileの設定があったら、それもいれてたり
0829nobodyさん
2012/03/15(木) 18:19:29.81ID:RuJGZOGkhttp://d.hatena.ne.jp/do_aki/20100319/1269021432
ここに書いてありました
お騒がせしました
0830nobodyさん
2012/03/15(木) 18:19:56.79ID:RuJGZOGkありがとうございます!
0831nobodyさん
2012/03/15(木) 18:42:10.70ID:VUkqieq6つまりテンポラリファイル的なものを作って
メモリ解放するやり方しかないって事ですね。
それなら納得しました。
0832(498===523===525)===(498=523=525)
2012/03/15(木) 18:54:35.96ID:r40AKqz2ファイルを全部配列に入れるのではなく、一定行数ごとに処理をすればいいだけではないですか。
0833nobodyさん
2012/03/15(木) 20:19:25.13ID:HppzpmUEPHPでプロセスに駐留するようなプログラムって作成できますか?
出来るならどのへんの関数を使うかや言葉などヒントお願いします。
やりたいことは現状タスクスケジューラで30秒置きに実行しているスクリプトを、
タスクスケジューラを使用しないで行いたいです。
Windowsで自分のPCなのでプログラム実行権限(ルート)はあります。
0834nobodyさん
2012/03/15(木) 20:26:04.03ID:???無限ループでsleepと処理を30秒おきに繰り返したほうが簡単
0836833
2012/03/15(木) 20:34:33.55ID:HppzpmUEなるほど。
タイムアウトなしの設定にもできますしループという手もありますね。
socketを見て無理そうならループにしたいと思います。
どうもありがとうございました。
0841nobodyさん
2012/03/15(木) 21:49:13.40ID:???Win2K+apache それにcli常駐させて2年程無停止でトラブルは出なかった
0842(498===523===525)===(498=523=525)
2012/03/15(木) 21:58:19.58ID:r40AKqz2タスクスケジューラで済むなら、それが最適。
CLIをループさせるだけでいいなら、それも簡単。
こういうツールもある。
http://pear.php.net/package/System_Daemon
0843(498===523===525)===(498=523=525)
2012/03/15(木) 22:02:04.36ID:r40AKqz2いろいろ気をつかってプログラムを書かないと、使用メモリーがどんどん増えていく。
0844nobodyさん
2012/03/15(木) 22:20:53.68ID:???変数使わなきゃメモリリークしないし
0846(498===523===525)===(498=523=525)
2012/03/15(木) 23:49:05.12ID:r40AKqz21000文字でメモリエラーになるはずは無いし、fgetcsvはファイルの
行単位にループして使うものだからそういうことでは無いよね。
http://php.net/manual/ja/function.fgetcsv.php
1行1000文字のファイル1行を配列1要素に入れて、それをループしたとき、
ある要素数でエラーになるってことでしょ。
0849nobodyさん
2012/03/16(金) 10:22:22.04ID:TYAnn7Fn株式会社、
有限会社、
合資会社、
(株)、
(有)
などの文字を除いた社名を表示したい場合、どのようなパターンにすればいいんですか?
除く文字は社名の先頭にある場合と最後にある場合があるんだけど・・・
0850nobodyさん
2012/03/16(金) 10:41:43.97ID:???ただ、そんなんだったら 株式会社を ""に置換してしまえ。
0851nobodyさん
2012/03/16(金) 10:41:50.30ID:???文中から会社名を拾ってとかいうのじゃなくて、
会社名カラムから拾うようなものななら、
それを全部列挙して、消した残りを表示すればいい。
0852nobodyさん
2012/03/16(金) 10:51:30.55ID:???0853nobodyさん
2012/03/16(金) 10:54:30.45ID:+dWmT1P1PHPを知らなかった時代は、HTMLで同じコードをいくつも書くというような
ちょっとした手間のかかるような制作は特に気にならなかったですが
PHPを知ってから、
ちょっとしたコピペも苦痛に感じるようになり、
もっと楽できないものか、もっと楽できないものかと
泥沼にはまってます。
で、楽できてたらそれはそれでいいんですが、
結局コピペや、手動で変換したほうが早いという・・・。
一つのファイルや、設定変数を共有させ過ぎで
例外が入ると、いちいち例外を記述しないといけないという・・・。
0854nobodyさん
2012/03/16(金) 11:05:51.60ID:???0855nobodyさん
2012/03/16(金) 11:07:43.51ID:???0856nobodyさん
2012/03/16(金) 11:07:58.12ID:???0857nobodyさん
2012/03/16(金) 11:08:31.54ID:???0859nobodyさん
2012/03/16(金) 11:33:27.19ID:+dWmT1P1効率を高めようとしているのか横着しようとしてるのかを
見極めていきます。
ちなみに「回答ありがとうございます。」もよく使うので
「かいあり」で辞書登録してます。
0861(498===523===525)===(498=523=525)
2012/03/16(金) 12:31:20.84ID:Ny7vUNEaはい。配列に入れる以外の処理を書いてないですし。
要素数の問題ですよね。
0862nobodyさん
2012/03/16(金) 12:38:53.40ID:???プログラムなんてタダのツールだし、学校の課題じゃないんだから、楽なほうでいいんだよ。
二度と触らんようなプログラムに、あとからあれこれ付け足すのを考慮するとかしないだろ?
効率上げるために横着するのが正しい。 効率の上がらない横着は横着じゃない。
できるだけ楽をしてすまそうとすることの方の意味でね。すべきことをしない横着はプログラムでは出来ないんだし。
0863(498===523===525)===(498=523=525)
2012/03/16(金) 13:09:18.10ID:Ny7vUNEaswitch($var){
case 'aaa':
}
switch(true){
case $var === 'aaa':
}
http://www.php.net/manual/ja/control-structures.switch.php#59991
0865nobodyさん
2012/03/16(金) 13:13:49.00ID:???常にどちらか一方で大丈夫だと思ってるなら甘い
0866(498===523===525)===(498=523=525)
2012/03/16(金) 13:40:37.20ID:Ny7vUNEaなるほどー。
>>865
緩い比較は使わないので、僕は後者しか使ってないです。
後者の書き方を知らなかった時は、switchを使うのがすごくイヤで、ifで書いていたりしました。
0867nobodyさん
2012/03/16(金) 15:13:52.02ID:???どちらかを使うって事は無いな
0868867
2012/03/16(金) 15:14:48.41ID:???正)どちらかのみ
0870(498===523===525)===(498=523=525)
2012/03/16(金) 16:49:38.82ID:Ny7vUNEa0872nobodyさん
2012/03/16(金) 19:59:09.74ID:???マエカブ株式会社
ってネタを思い出した
0873nobodyさん
2012/03/16(金) 22:25:23.76ID:90NjddGX// somelib.php
$global_variable = 'golobal variable';
class Somelib {...}
// myclass.php
class Parent {...}
class Child1 extends Parent {...}
class Child2 extends Parent {
public function some_method() {
require_once 'somelib.php';
$somelib_obj = new Somelib();
}
}
このようにひとつのファイルに複数のクラスを割り当てています。
Child1ではsomelib.phpは不要なので、Child2が使用された場合にのみ読み込もうと、上記のように書きました。
しかし、インスタンス生成は(当然)できるものの、グローバル変数$global_variableは読み込まれません。
somelib.php内に$GLOBALS['global_variable']として呼び出すコードがあるため、そこでエラーとなります。
この場合のルールってどうなってるんでしょうか。
※myclass.phpのグローバル領域にてrequireした場合には問題ありません。
0875nobodyさん
2012/03/16(金) 22:55:23.96ID:90NjddGXありがとうです。そうか、ライブラリと同じ(グローバルの)スコープではないんですね。
動作の確認できました。ひとまずrequireの直後に以下のように追加して凌ごうと思います〜。
なんかえらい雑な感じもするけど・・・
$GLOBALS['global_variable'] = $global_variable;
0876nobodyさん
2012/03/17(土) 04:06:15.48ID:ErwHrG3p↑のサイトのやり方で、ページングの機能をつくりたいのですが、
0からではなく、最初のページを1からにしたいんです。
どなたか教えてください。。。
0877nobodyさん
2012/03/17(土) 04:22:39.51ID:???0878nobodyさん
2012/03/17(土) 04:38:51.34ID:ErwHrG3pありがとう。でもわからんw
function getNaviLink() {
$naviLink = null;
for ($i = 0; $i < $this->maxPageNum; $i++) {
ここを1にしたら最初のページのリンクがなくなたです
0880nobodyさん
2012/03/17(土) 05:20:39.95ID:ErwHrG3pたぶんできた!!!ありがとう\(^o^)/
0881nobodyさん
2012/03/17(土) 05:24:18.22ID:???全体的に変えないとだめだろう
+1とか-1とかつけたり消したり等号を<から<=に変えたり
つうか自分で作れない人は改造スレね
http://kohada.2ch.net/test/read.cgi/php/1314546533/
0882nobodyさん
2012/03/17(土) 05:46:48.90ID:???Awesome Pagination with ZF, Paginator, AjaxContext and the HTML5 History API
http://blog.philipbrown.id.au/2011/03/awesome-pagination-with-zf-paginator-ajaxcontext-and-the-html5-history-api/
0883nobodyさん
2012/03/17(土) 05:57:56.87ID:???0884nobodyさん
2012/03/17(土) 06:18:27.10ID:???> 毎回ページング対象の全レコードを投げる必要があったりと、とても微妙な事をしているので、
> データ量が多い場合には微妙な気がするけれど、数千件程度のデータなら別にこれでも良いんじゃないかな〜と。
こんなこと書いてるところを信用するなでいいと思う。
0885nobodyさん
2012/03/17(土) 06:27:58.81ID:???0887nobodyさん
2012/03/17(土) 06:32:20.08ID:???とか書いてるのに
$this->pageNum = intval($pageNum);
とか書いてるのがPHPの嫌なところだな
こういうのってしっかりやるときはやっぱり
InvalidArgumentException投げるんだろうか
0889nobodyさん
2012/03/17(土) 06:40:37.80ID:???0890nobodyさん
2012/03/17(土) 07:01:48.15ID:???0891(498===523===525)===(498=523=525)
2012/03/17(土) 07:48:34.40ID:WDIEzOVg>>884
Pear::Pagerも、同じく取得するデータを制限するのではなく、
全件取得して表示するデータを制限するだけという小規模仕様。
http://pear.php.net/manual/ja/package.html.pager.php
>数千件程度のデータなら
まぁ、非効率なことをやっているという意識があって、
実際の動きが遅くないならいいんじゃないかという気もする。
件数が増えればすぐに遅くなる。
0892nobodyさん
2012/03/17(土) 07:59:08.54ID:???<?php
print \"No\";
?>
";
$bbb = str_replace( "No", "Yes",$data );
/////////////////////
$dataの文字列が<?php ?>でくくって
あるとstr_replace できないようですが
置換する方法を教えて下さい。
0893(498===523===525)===(498=523=525)
2012/03/17(土) 08:06:22.87ID:WDIEzOVgそれは言語とは関係のないコードの話ですよね。
「$this->pageNum = intval($pageNum); 」では、フォームから受け取った文字列型のページ値を
文字列から数値に「意図的に」変換しつつ、入力値の制限にもなるし、全く問題ない記述だと思う。
自分なら、フォームで受け取る処理でページは数値化しておくけど。
0894(498===523===525)===(498=523=525)
2012/03/17(土) 08:09:10.72ID:WDIEzOVg$data="" じゃなく $data='' に。
0895nobodyさん
2012/03/17(土) 08:10:25.63ID:???2dが2になるのが嫌なんです
0897(498===523===525)===(498=523=525)
2012/03/17(土) 08:18:37.82ID:WDIEzOVgページャーの外で ctype_digit でもしとけばいい話。
って、やっぱりPHPと関係ない。
0898nobodyさん
2012/03/17(土) 08:21:27.67ID:???0899nobodyさん
2012/03/17(土) 08:24:34.84ID:???0900nobodyさん
2012/03/17(土) 08:30:02.68ID:???/detail/1420596/
/detail/1420596jp/
が同じ結果ってのはな
後者はNotFoundにしないとだめだろ
0901nobodyさん
2012/03/17(土) 09:27:30.59ID:j6AXQeWwQdSmtp error: getMessage error line -> 543
QdSmtp error: Error From setting line -> 488
QdSmtp error: Send Data Error or Auth Error line -> 415
Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.2.11
Qdmail error: OS WINNT ; PHP Version 5.2.11 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 3, errorlog: 0
Qdmail error: No send . Because SMTP mail method replied error line -> 2190
Qdmail error: Send Error line -> 2115
Qdmail error: Error happen, see upper line -> 2194
Qdmail error: Send Error line -> 2115
Qdmailでメールを送信すると上記のようなエラーが出て送信できない場合があるのですが、
これはどういったエラーなんでしょうか?
(このあとすぐにもう1度同じ処理を更新ボタンを押してすると成功する場合が多いです)
0902901
2012/03/17(土) 09:28:09.71ID:j6AXQeWwメールサーバはさくらインターネットを利用しています。
0903nobodyさん
2012/03/17(土) 10:26:37.10ID:???0904nobodyさん
2012/03/17(土) 11:47:59.61ID:???PEARでもスレ違いって言われるぐらいなのに
0905nobodyさん
2012/03/17(土) 12:26:16.65ID:???0906892
2012/03/17(土) 15:25:57.69ID:???ありがとうございました。
0907(498===523===525)===(498=523=525)@家
2012/03/17(土) 17:13:21.10ID:m3CObGes静的型付けならそうなるが、動的型付けであっても、自動変換しないでエラーにする関数が
用意されていたらいいんだと思う。
が、PHPは「自動変換しますよ!」的なポリシーで、用意していないって事なのかな。
まぁ、簡単に書けるので、そうしたければ自分で用意して使え、というポリシーなんだろう。
JavaだとInteger::Integer(String s)か。
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Integer.html#Integer(java.lang.String)
>>899
大して変わんねんじゃね?
>>900
確かに横着。
でも知っていて手を抜く場合もあるかも。
0908nobodyさん
2012/03/17(土) 20:28:53.68ID:???windows7、php 5.4.0です。
ディレクトリをオープンする時、フォルダパスにダメ文字が入っていると開けないのですが、どうすれば解決できるでしょうか。
$path="C:\コッソリ噂";
opendir($path);
文字コードをsjis、sjis-winにするのかなと思ったのですが、変わりませんでした。
opendir(mb_convert_encoding($path,'SJIS','UTF-8'));
opendir(mb_convert_encoding($path,'SJIS-win','UTF-8'));
レス数が900を超えています。1000を超えると表示できなくなるよ。