質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

527閲覧

HTMLタグを1万個、PHPで動的生成するととても時間がかかる

t7y4j8orhiyjhug

総合スコア16

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/01/22 14:01

編集2020/01/22 14:32

次のようなPHPコードで、100×100個のDIVブロックでモザイクタイルのようなものを
作りたいと考えています。

<?php $color = array(); $color[1] = '#4a8af4'; $color[2] = '#dc4e41'; $color[3] = '#ffcd42'; ?> <?php for($t=0; $t<100; $t++): ?> <?php for($i=0; $i<100; $i++): ?> <div style="display:inline-block;width:5px;height:5px;background-color:<?php echo $color[rand(1,3)] ?>"></div> <?php endfor; ?> <br> <?php endfor; ?>

実際にやってみると1分や2分では済まず、延々とブラウザが読込続けます。

何らかの手段を用いて、1分以内に、全て出力できるようにしたいのですが、
そういった手法はないものでしょうか。

お詳しい方がいらっしゃいましたら、何卒ご教授のほどお願いいたします。

追記
PHP 7.2
ブラウザ CHROME 79 (64bit)
サーバー: ロリポップの一番安いプラン

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/01/22 14:13

環境情報(PHPのバージョンなど)をご提示ください
t7y4j8orhiyjhug

2020/01/22 14:22

レンタルサーバー上に置いて、インターネット経由で実行しました。 m.ts10806 さん と maisumakun さんのご回答を参考に、 一度、ローカルでXAMPPで実行してみます。
m.ts10806

2020/01/22 14:24

レンタルサーバーであることは質問本文からは読み取れませんので、 PHPバージョン含めて質問本文に「どのレンタルサーバーか」「プラン」も含めてご提示ください。
m.ts10806

2020/01/22 14:26

いえ、謝ってほしいわけではなく、質問をきちんとしてもらいたいだけなので。 質問は編集できますので適宜ご対応ください。
guest

回答2

0

何らかの手段を用いて、1分以内に、全て出力できるようにしたいのですが、

きちんと出力できるとすれば、PHPの出力自体は、1秒もかからないです。

サーバサイドでの実行時間制限や容量制限などで、実行が尻切れトンボになっていないかを確認したほうがいいかもしれません。

投稿2020/01/22 14:15

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

ベストアンサー

同じコード実行したところ
0.022470951080322 秒 で済みましたけど・・。
PHP7.3 XAMPP(Windows)です。

php

1<?php 2$time = microtime(true); 3$color = array(); 4$color[1] = '#4a8af4'; 5$color[2] = '#dc4e41'; 6$color[3] = '#ffcd42'; 7?> 8 9<?php for($t=0; $t<100; $t++): ?> 10<?php for($i=0; $i<100; $i++): ?> 11<div style="display:inline-block;width:5px;height:5px;background-color:<?php echo $color[rand(1,3)] ?>"></div> 12<?php endfor; ?> 13<br> 14<?php endfor; ?> 15<?php 16echo microtime(true) - $time;

画面:
イメージ説明

投稿2020/01/22 14:16

編集2020/01/22 14:18
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t7y4j8orhiyjhug

2020/01/22 14:33

ローカルで実行したらすぐ出ました。
t7y4j8orhiyjhug

2020/01/22 14:33

サーバーのPHP.INIなどを見直してみます。
m.ts10806

2020/01/22 14:35

「処理終わらない」のであればphp.iniというローカルな次元ではなく、 サーバー管理上の問題なので一般ユーザには手が出せない領域なのではないかと。 多重ループがダメとかループの回数が多すぎるとかあるかもしれませんね。 サーバー管理に問い合わせるのが良いかと思います。
t7y4j8orhiyjhug

2020/01/22 14:36

そうしてみます! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問