PHPシニアエンジニア、PHPシニアエンジニア採用の面接質問一覧をまとめました
1.
。 。 。
Include require include_once require_once の違い。
mysql4.0 から 4.1 へ、PHP 4.x から 5.1 への大幅な改良など、PHP/Mysql のいくつかのバージョンの進化の歴史。
PHPコード
- MySQL:
-
- 1. 4.0 から 4.1 への主な変更点
-
- TIMESTAMP フィールドを含む InnoDB テーブルが MySQL バージョン 4.1.0 から 4.1.3 で作成された場合。その後、ストレージ形式が変更されているため、4.1.4 以降にアップグレードするときにテーブルを再構築する必要があります。
-
- 文字列は標準 SQL に従って比較されます。比較前に末尾のスペースは削除されません。また、短い文字列は以前に末尾のスペースで拡張されていました。現在の結果は
-
- 'a' > 'at'、以前はそうではありませんでした。 mysqlcheck を使用してデータテーブルを確認できます。
-
- TIMESTAMP は、'YYYY-MM-DD HH:MM:SS' の形式で文字列を返します。 MySQL 4.0 では、オプション --new を追加して、ySQL 4.1 でこの機能を取得できます。
-
- MySQL 4.1.1 より前では、ステートメント パーサーは、文字列から時間への変換を処理するときに、最初の数値の前の他の文字を無視していました。 4.1.1以降はより厳密になり、戻り値がDATE型、DATETIME型、TIME型の関数の結果は時刻型
に変換されます。
-
- 2. 4.1 から 5.0 への主な変更点を見てみましょう
-
- ◆InnoDB テーブルと MyISAM テーブルのスペースで終わる TEXT フィールドのインデックス順序が変更されました。したがって、"CHECK TABLE" ステートメントを実行してデータ テーブルを修復する必要があります。エラーが発生した場合は、"OPTIMIZE TABLE" または "REPAIR TABLE" ステートメントを実行して修復するか、(使用して) 再ダンプする必要があります。 mysqldump)。
-
- ◆MySQL 5.0.15 から、BINARY フィールドに入力された値の処理方法が変更されました。パディングされた値はスペースではなく 0x00 になり、値を取得するときに末尾のスペースは削除されません。
-
- ◆MySQL 5.0.3 以降、DECIMAL の実装は DECIMAL に対する形式制限がさらに厳しくなりました。 MySQL 5.0.3 と 5.0.5 の間で MyISAM テーブルと InnoDB テーブルに作成された DECIMAL フィールドは、5.0.6 にアップグレードするとクラッシュします。 5.0.3 以降、DECIMAL はより効率的な形式で保存されます。 5.0.3 以降、10 進数の値を計算し、正確な値を四捨五入するときに正確な計算が使用されます。
-
- ◆以前は、タイムアウト ロックを待機すると、InnoDB は現在のトランザクションをすべてロールバックしていました。5.0.13 からは、最新の SQL ステートメントのみがロールバックされます。
-
- ◆4.1.13/5.0.8以前は、DATETIMEに0を付加してYYYYMMDDHHMMSS形式に変換していましたが、現在はYYYYMMDDHHMMSS.000000形式になっています
-
- ◆4.1ではFLOATかDOUBLEの比較がうまくいきましたが、5.0ではうまくいかない可能性があります
-
- ◆5.0.3 より、VARCHAR フィールドと VARBINARY フィールドの末尾のスペースは削除されなくなりました
-
- ◆新しい起動オプション innodb_table_locks を追加しました。これにより、LOCK TABLE の場合でも InnoDB テーブル ロックが要求されます。このオプションはデフォルトで有効になっていますが、AUTOCOMMIT=1 および LOCK TABLES アプリケーションでデッドロックが発生する可能性があります。時間 (TIMESTAMP、DATETIMEDATE、TIME) と数値型 (FLOAD、DOUBLE、DECIMAL) の 2 種類の変更に注目するだけで済み、実行中に文字セットを関与させる必要はないようです。アップグレードプロセスの問題なので、比較的簡単です。
-
- アップグレード手順は次のとおりです:
-
- 実行
-
- 読み取りロック付きのフラッシュテーブル
-
- MyISAMテーブルファイルを直接コピー
-
- mysqldumpを使用してInnodbタイプテーブルをエクスポートする
-
- 全体のプロセスは順調に進みましたが、新しいシステムが開始された後、次の 2 つの問題が見つかりました。
-
キーワード INOUT が追加されたため、テーブル構造内の他のフィールドでそのキーワードが使用されているかを確認する必要があります -
-
DATE_FORMAT 関数にはさらに厳しい要件があります。-
-
DATE_FORMAT(- '2006/11/24 09:14:00', '%Y-%m-%d %T')
と DATE_FORMAT(- '2006/11/2409:14:00', '%Y-%m-%d %T')
-
結果はまったく異なります。4.0 では、これら 2 つの形式は互換性がありますが、5.0 では前者のみが正しく使用でき、後者には問題が発生します。これも、前述の時間タイプの変更によって引き起こされるはずです。 -
PHP:
PHPコード
PHP5 の次の改善点は注目に値します: -
1. オブジェクト指向機能が大幅に向上しました。
- 2. try/catch 例外処理をサポートします。
3. 文字列処理の改善。
- 4. XML および Web サービスのサポートの改善。
5. SQlite の組み込みサポート。 -
-
ヘレドックの紹介- PHPコード
- ヒアドキュメント技術は一般に、正式な PHP ドキュメントや技術書には詳しく説明されておらず、Perl スタイルの文字列出力技術であるとのみ言及されています。ただし、現在のフォーラム プログラムや記事システムの一部では、ヒアドキュメント テクノロジを巧みに使用して、インターフェイスとコードの準分離を部分的に実現しています。その典型的な例が phpwind テンプレートです。
-
- 1. 終了開始タグで始まり、終了終了タグで終了します。終了タグはインデントやスペースを入れずに先頭に記述し、末尾にセミコロンを付ける必要があります。終了タグ。開始タグは、開始タグと同じです。たとえば、大文字の EOT、EOD、EOF で表されますが、これらに限定されないように注意してください。文中に登場します。
-
- 2. 開始タグと終了タグの間にある変数は正常に解析できますが、関数は解析できません。ヒアドキュメントでは、次のように変数をコネクタで結合する必要はありません。
-
- $v=2 ;
- $a=
- 「abc」$v
- 「123」
EOF;
- echo
- $a; //結果は二重引用符で囲まれて出力されます: "abc"2 "123"
- 3.heredoc は、大量の HTML 構文を含むドキュメントを出力する場合によく使用されます。たとえば、関数outputhtml()はHTMLホームページを出力する必要があります。書き方は2通りあります。明らかに、2 番目の書き方の方がシンプルで読みやすいです。
-
- 関数出力html(){
-
エコー - ""
エコー - "ホームページ";
エコー "ホームページのコンテンツ";
エコー "; -
}
- 関数出力html()
- {
- エコー
ホームページ
- ホームページのコンテンツ
- EOT;
}
-
outputhtml();
-
- $ 変数はヒアドキュメント内で自動的に置き換えられ、コマンドと入力は便宜上まとめられます
-
- いくつかの php マジック メソッドを作成します;
PHPコード
- PHP では、2 つのアンダースコア (__) で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードする場合を除き、関数名を __ で始めないことをお勧めします。
- PHP のマジック メソッドは次のとおりです: __construct、__destruct、__call、__callStatic、__get、__set、__isset、__unset、__sleep、__wakeup、__toString、__set_state、__clone、__autoload
- 1、__get、__set
- これら 2 つのメソッドは、クラスとその親クラスで宣言されていないプロパティ用に設計されています
- __get($property) このメソッドは、未定義のプロパティが呼び出されたときにトリガーされ、渡されるパラメータはアクセスされるプロパティの名前です
- __set($property, $value) 未定義のプロパティに値を割り当てると、このメソッドがトリガーされます。渡されるパラメーターは、設定されたプロパティの名前と値です
。
- ここでの非宣言には、アクセス制御が保護されている属性と、オブジェクトを使用して呼び出された場合の プライベート (つまり、アクセス許可のない属性) が含まれます。
- 2、__isset、__unset
- __isset($property) このメソッドは、isset() 関数が未定義のプロパティに対して呼び出されたときに呼び出されます
- __unset($property) このメソッドは、unset() 関数が未定義のプロパティに対して呼び出されたときに呼び出されます
- ここでの no 宣言には、呼び出しにオブジェクトを使用する場合、アクセス制御が保護される場合、プライベート属性 (つまり、アクセス許可のない属性)
が含まれます。
- 3、__電話
- __call($method, $arg_array) このメソッドは、未定義のメソッドを呼び出すときに呼び出されます
- ここでの未定義のメソッドには、アクセス権限がないメソッドが含まれます。メソッドが存在しない場合は、親クラスに移動してメソッドを見つけます。このメソッドの __call() メソッドを呼び出します。このメソッドがクラスに __call() メソッドが存在しない場合は、親クラスの __call() メソッドに移動します
-
- 4、__自動ロード
- __autoload 関数。まだ定義されていないクラスを使用しようとすると自動的に呼び出されます。この関数を呼び出すことにより、スクリプト エンジンは、PHP がエラーで失敗する前に、必要なクラスをロードする最後のチャンスを得ることができます。
- グローバル オートロード クラスを定義したい場合は、 spl_autoload_register() メソッドを使用して、処理クラスを PHP 標準ライブラリに登録する必要があります。
- クリップボードプリントへのプレーンコピーを表示しますか?
クラスローダー
{
静的関数autoload_class($class_name)
{
//正しい $class_name クラスを見つけて導入します。そうでない場合は、例外がスローされます
}
}
/**
* オブジェクトの自動読み込みを設定します
* spl_autoload_register — 指定された関数を __autoload() 実装として登録します
*/
spl_autoload_register(
array('Loader', 'autoload_class'));
$a = new Test();
//多くのフレームワークは、このメソッドを使用してクラスを自動的にロードします
。
?>
注: __autoload 関数でスローされた例外は、catch ステートメント ブロックではキャッチできず、致命的なエラーの原因となるため、関数自体でキャッチする必要があります。
5、__構築、__破壊
__construct コンストラクター メソッド。このメソッドは、PHP4 と比較して、オブジェクトの作成時に呼び出されます。このメソッドを使用する利点は、コンストラクター メソッドが含まれるクラスの名前に関係なく、一意の名前を持つことができることです。ちなみに、クラス名を変更しているので、コンストラクターの名前を変更する必要はありません
__destruct デストラクター メソッド。PHP はオブジェクトが破棄される前 (つまり、メモリからクリアされる前) にこのメソッドを呼び出します。デフォルトでは、PHP はオブジェクトのプロパティによって占有されているメモリのみを解放し、オブジェクト関連のリソースを破棄します。デストラクタを使用すると、オブジェクトの使用後に任意のコードを実行してメモリをクリアできます。スクリプトがオブジェクトに関連付けられなくなったと PHP が判断すると、デストラクターが呼び出されます。
関数の名前空間内では、関数 が返されるときにこれが発生します。
グローバル変数の場合、これはスクリプトの最後に発生します。
オブジェクトを明示的に破棄したい場合は、そのオブジェクトを指す変数に他の値を代入するか、または unset を呼び出します。
6、__クローン
PHP5 でのオブジェクトの割り当ては参照割り当てを使用します。オブジェクトをコピーする場合、このメソッドを呼び出すときに、オブジェクトは自動的に __clone マジック メソッドを呼び出します。オブジェクトのメソッド実装を __clone できます。
7、__toString
__toString メソッドは、
echo を使用してオブジェクトを出力する場合など、オブジェクトを文字列に変換するときに自動的に呼び出されます。
クラスがこのメソッドを実装していない場合、オブジェクトは
echo を通じて出力できません。そうでない場合は、次のメッセージが表示されます: キャッチ可能な致命的なエラー: クラス テストのオブジェクトを の文字列に変換できませんでした
このメソッドは文字列を返す必要があります。
PHP 5.2.0 より前では、__toString メソッドは
echo() または print() と組み合わせて使用した場合にのみ有効になります。 PHP 5.2.0 以降では、任意の文字列環境 (たとえば、%s 修飾子を使用した printf() 経由) で使用できますが、非文字列環境 (%d 修飾子の使用など) では使用できません。 PHP 5.2.0 以降、__toString メソッドが定義されていないオブジェクトが文字列に変換されると、E_RECOVERABLE_ERROR エラーが報告されます。
8、__睡眠、__起床
__sleep シリアル化時に使用します
__wakeup は逆シリアル化中に呼び出されます
serialize() は、クラス内にマジック名 __sleep を持つ関数があるかどうかを確認します。その場合、関数はシリアル化の前に実行されます。これはオブジェクトをクリアし、シリアル化する必要があるオブジェクト内のすべての変数の名前を含む配列を返す必要があります。
__sleep を使用する目的は、オブジェクトが持つデータベース接続を閉じたり、保留中のデータを送信したり、同様のクリーンアップ タスクを実行したりすることです。さらに、この機能は、完全に保存する必要のない非常に大きなオブジェクトがある場合に便利です。
逆に、 unserialize() はマジック名 __wakeup を持つ関数の存在をチェックします。この関数は、オブジェクトが持つ可能性のあるリソースが存在する場合、それを再構築できます。
__wakeup を使用する目的は、シリアル化中に失われた可能性のあるデータベース接続を再確立し、他の再初期化タスクを処理することです。
9、__set_state
この静的メソッドは、var_export() が呼び出されたときに呼び出されます (PHP 5.1.0 以降で有効)。
このメソッドの唯一のパラメータは配列であり、
array('property' => value, …) の形式で配置されたクラス プロパティが含まれます。
10、__呼び出し
関数を呼び出してオブジェクトを呼び出そうとすると、__invokeメソッドが自動的に呼び出されます。
PHP5.3.0以降が有効です
11、__callStatic
これは __call() マジック メソッドと同様に機能します。__callStatic() は静的メソッド呼び出しを処理します。
PHP5.3.0以降が有効です
PHP は __callStatic() メソッドの定義を強化しており、パブリックである必要があり、静的に宣言する必要があります。同様に、 __call() マジック メソッドは、他のすべてのマジック メソッドと同様に、パブリックとして定義する必要があります
PHPのコンパイル時にパラメータを設定するものもありますPHPコード
- ./構成
- – Prefix =/usr/local/php
–with-apxs2=/usr/local/apache/bin/apxs -
–with-config-file-path=/usr/local/php/etc php.ini の場所を指定します -
–with-mysql=/usr/local/mysql mysql インストール ディレクトリ、mysql のサポート -
–with-mysqli=/usr/local/mysql/bin/mysql_config mysqli ファイル ディレクトリ、最適化されたサポート -
–セーフモードを有効にする
- –enable-ftp FTP サポートをオンにする
- –enable-zip zip のサポートをオンにする
- –with-bz2 bz2 ファイルのサポートをオンにする
- – jpeg-dirで
– Png-Dirで
- –with-freetype-dir フリータイプ フォント ライブラリのサポートをオンにする
- –without-iconv 文字セット間の変換を行う iconv 関数をオフにします
- –with-libxml-dir libxml2 ライブラリのサポートをオンにする
- –with-xmlrpc xml-rpc の C 言語を開きます
- –with-zlib-dir zlib ライブラリのサポートをオンにする
- –with-gd gd ライブラリのサポートをオンにする
- –enable-gd-native-ttf TrueType 文字列関数ライブラリをサポート
- –with-curl CURL ブラウジング ツールのサポートをオンにする
- –with-curlwrappers Curl ツールを使用して URL ストリームを開きます
- –with-ttf open freetype1.* サポート、追加する必要はありません
- –with-xsl オープン XSLT ファイルのサポート、拡張 libxml2 ライブラリ、libxslt ソフトウェアが必要
- –with-
gettext gnu の - gettext サポートを開き、コーディング ライブラリは
- を使用します
–with-pear PHP 拡張に使用される pear コマンドのサポートをオンにします
- –enable-calendar カレンダー拡張機能をオンにする
- –enable-mbstring マルチバイト、文字列のサポート
- –enable-bcmath オープン画像サイズ調整。このモジュールは、zabbix モニタリングを使用するときに使用されます
- –enable-sockets ソケットのサポートをオンにする
- –enable-exif 画像メタデータのサポート
- –enable-magic-quotes マジッククオートのサポート
- –disable-rpath 追加のランタイム ファイルをオフにする
- –disable-debug デバッグ モードをオフにする
- –with-mime-magic=/usr/share/file/magic.mime Magic ヘッダー ファイルの場所
- CGIのインストールにのみ使用されるパラメータ
- –enable-fpm このパラメータは、php-fpm パッチを適用した後にのみ使用できます。これは、CGI モードでインストールされるスタートアップ プログラムです。
–enable-fastcgi php を起動する fastcgi モードをサポートします -
–enable-force-cgi-redirect 上記と同じですが、ヘルプには説明がありません-
–with-ncurses ncurses の画面描画とテキストターミナルベースのグラフィカルインタラクション機能をサポートするダイナミックライブラリ-
–enable-pcntl は freeTDS に必要であり、mssql をリンクするために使用される可能性があります -
mhash および mcrypt アルゴリズムの拡張機能 -
– with-mcrypt アルゴリズム -
– with-mhash アルゴリズム -
– gmp 付き -
–インライン最適化を有効にする -
–with-openssl 暗号化された送信に使用される openssl のサポート -
– データベースの有効化 -
–with-pcre-dir=/usr/local/bin/pcre-config Perl の通常のライブラリのインストール場所 -
–dmalloc を無効にする -
–with-gdbm dba の gdbm サポート -
–enable-sigchild -
–enable-sysvsem -
–enable-sysvshm -
–enable-zend-multibyte zend マルチバイトをサポートします -
–mbregex を有効にする -
–wddx を有効にする -
– シュモップを有効にする -
– 石鹸を有効にする -
PHP 構成オプションの完全なリスト -
データベースオプション-
–dbplus 付き -
dbplus サポートが含まれます。 -
–with-adabas[=DIR] -
Adabas D サポートが含まれます。 DIR は Adabas の基本インストールディレクトリであり、デフォルトは /usr/local です。 -
–with-sapdb[=DIR] -
SAP DB サポートが含まれます。 DIR は SAP DB の基本インストール ディレクトリであり、デフォルトは /usr/local です。 -
–with-solid[=DIR] -
しっかりとしたサポートが含まれています。 DIR は Solid の基本インストール ディレクトリで、デフォルトは /usr/local/solid です。 -
–with-ibm-db2[=DIR] -
IBM DB2 サポートが含まれます。DIR は DB2 の基本インストール ディレクトリで、デフォルトは /home/db2inst1/sqllib です。
- –皇后と[=DIR]
- Empress のサポートが含まれます。 DIR は Empress の基本インストール ディレクトリで、デフォルトは $EMPRESSPATH です。 PHP4 以降、このオプションは Empress 8.60 以降のみをサポートします。
- –with-empress-bcs[=DIR]
- Empress Local Access のサポートが含まれます。 DIR は Empress の基本インストール ディレクトリで、デフォルトは $EMPRESSPATH です。 PHP4 以降、このオプションは Empress 8.60 以降のみをサポートします。
- –with-birdstep[=DIR]
- バードステップのサポートが含まれています。 DIR は Birdstep の基本インストール ディレクトリで、デフォルトは /usr/local/birdstep です。
- –with-custom-odbc[=DIR]
- ユーザー定義の ODBC サポートが含まれています。 DIR は ODBC の基本インストール ディレクトリで、デフォルトは /usr/local です。 CUSTOM_ODBC_LIBS が定義されていること、および include ディレクトリに odbc.h があることを確認してください。たとえば、QNX の Sybase SQL Anywhere 5.5.00 の場合、configure スクリプトを実行する前に環境変数 CPPFLAGS=”-DODBC_QNX -DSQLANY_BUG” LDFLAGS=-lunix CUSTOM_ODBC_LIBS=”-ldblib -lodbc” を定義する必要があります。
–with-iodbc[=DIR]
- iODBC サポートが含まれています。 DIR は iODBC の基本インストール ディレクトリで、デフォルトは /usr/local です。
- –with-esoob[=DIR]
- Easysoft OOB サポートが含まれています。 DIR は OOB の基本インストール ディレクトリで、デフォルトは /usr/local/easysoft/oob/client です。
- –with-unixODBC[=DIR]
- unixODBC サポートが含まれます。 DIR は unixODBC の基本インストール ディレクトリで、デフォルトは /usr/local です。
- –with-openlink[=DIR]
- OpenLink ODBC サポートが含まれています。 DIR は OpenLink の基本インストール ディレクトリで、デフォルトは /usr/local です。これはiODBCと同じです。
- –with-dbmaker[=DIR]
- DBMaster サポートが含まれます。 DIR は DBMaster の基本インストール ディレクトリで、デフォルトは DBMaster の最新バージョンがインストールされているディレクトリ (/home/dbmaker/3.6 など) です。
- –統合ODBCを無効にする
- 統合ODBCのサポートをキャンセルします。 iODBC、Adabas、Solid、Velocis、またはユーザー定義の ODBC インターフェイスがアクティブ化されている場合にのみ適用されます。 PHP 3 でのみ動作します。
- 画像オプション
- – gd なし
- GD サポートを無効にします。 PHP3のみ対応!
- –imagick 付き
- Imagick 拡張機能は PEAR の PECL に移動されており、ここにあります。 PHP 4 のインストール手順は、PEAR サイトで参照できます。
- --with-imagick のみを使用します。PEAR サイトの指示に従わない限り、PHP 3 でサポートされます。
- –with-ming[=DIR]
- ming サポートが含まれます。
- その他のオプション
- –force-cgi-redirect を有効にする
- 内部サーバーリダイレクトのセキュリティチェックを有効にします。このオプションは、PHP が Apache の CGI モードで使用される場合に使用する必要があります。
- –廃棄パスの有効化
- このオプションを使用すると、PHP の CGI 実行可能プログラムを Web ディレクトリ ツリーの外側に安全に配置できるようになり、他のプログラムは .htaccess のセキュリティ設定をバイパスできなくなります。
- –fastcgi 付き
- PHP を FastCGI アプリケーションにコンパイルします。
- –デバッグを有効にする
- コンパイル時にデバッグシンボルを追加します。
- –with-layout=TYPE
- インストール後にファイルレイアウトを設定します。 TYPE には PHP (デフォルト) または GNU を指定できます。
- –with-pear=DIR
- PEAR を DIR ディレクトリにインストールします (デフォルトは PREFIX/lib/php)。
- –梨なし
- PEAR をインストールしないでください。
- –enable-sigchild
- PHP 独自の SIGCHLD ハンドルをアクティブ化します。
- –rpath を無効にする
- 追加のランタイム ライブラリ検索パスの受け渡しを無効にします。
- –libgcc を有効にする
- 明示的な libgcc リンクをアクティブ化します。
- –php-streams を有効にする
- 実験的な PHP ストリームが含まれています。ソースコードをテストする場合以外は使用しないでください。
- –with-zlib-dir=;
zlibのインストールパスを定義します。 -
–with-aspell[=DIR] -
ASPELL サポートが含まれます。 -
–with-ccvs[=DIR] -
CCVS サポートが含まれています。 -
–サイバーキャッシュ付き[=DIR] -
CyberCash のサポートが含まれます。 DIR は CyberCash MCK のインストール ディレクトリです。 -
–icap[=DIR]付き-
ICAP サポートが含まれます。 -
–ircg-config 付き -
ircg-config スクリプトへのパス。 -
–ircg 付き -
ircg サポートが含まれています。 -
–mailparse を有効にする -
mailparse のサポートが含まれています。 -
–マスカット付き[=DIR] -
マスカットサポートが含まれています。 -
–衛星付き[=DIR] -
サテライト経由で CORBA サポートをアクティブ化します (実験的)。 DIR は ORBit のホームディレクトリです。 -
–trans-sid を有効にする -
透過的なセッション ID の伝達をアクティブ化します。 -
–正規表現付き[=TYPE] -
システム正規表現ライブラリ (非推奨) を使用します。 -
–with-vpopmail[=DIR] -
vpopmail のサポートが含まれています。 -
–tsrm-pthreads 付き -
POSIX スレッドを使用します (デフォルト)。 -
–共有を有効にする[=PKGS] -
共有ライブラリをコンパイルします [- デフォルト = はい]。
–enable-- static[=PKGS]
静的ライブラリをコンパイルします [- default=yes]。
–高速インストールを有効にする[=PKGS] -
高速インストール用に最適化されています [- デフォルト = はい]。
–with-gnu-ld -
C コンパイラが GNU ld [- default=no] を使用すると仮定します。
–libtool-lock を無効にする -
ロックは避けてください (並列コンパイルが中断される可能性があります)。 -
– 写真付き -
PIC/非 PIC オブジェクトのみを使用するようにしてください [- デフォルト=両方を使用]。
–メモリ制限を有効にする -
コンパイル時にメモリ制限のサポートを追加します。 -
–url-- fopen-wrapper を無効にする
URL 経由の - fopen ラッパーは禁止されており、HTTP または FTP 経由でファイルにアクセスすることはできません。
– バージョン管理を有効にする -
必要なシンボルのみを出力します。詳細については、INSTALL ファイルを参照してください。 -
–with-imsp[=DIR] -
IMSP サポートが含まれます (DIR は、IMSP の - include ディレクトリと libimsp.a ディレクトリです)。 PHP3のみ対応!
–with-mck[=DIR] -
Cybercash MCK サポートが含まれます。 DIR は cybercash mck コンパイル ディレクトリで、デフォルトは /usr/src/mck-3.2.0.3-linux です。ヘルプについては、extra/cyberlib を参照してください。 PHP3のみ対応! -
–with-mod-dav=DIR -
Apache の mod_dav による DAV サポートが含まれています。 DIR は mod_dav のインストール ディレクトリです (Apache モジュール バージョンのみ!) PHP 3 のみ! -
–デバッガーを有効にする -
リモートデバッグ機能にコンパイルします。 PHP3のみ対応! -
– バージョン管理を有効にする -
Solaris 2.x および Linux が提供するバージョン管理とスコープを活用します。 PHP3のみ対応! -
PHP オプション -
–メンテナモードを有効にする -
アクティブ化すると、コンパイル ルールと未使用 (および一部の難読化された) 依存関係ファイルが一時インストールに配置されます。 -
–with-config-file-path=PATH -
php.ini が配置されているパスを設定します。デフォルトは PREFIX/lib です。 -
–セーフモードを有効にする -
セーフモードはデフォルトで有効になっています。
- –with-exec-dir[=DIR]
- セーフ モードでは、このディレクトリ内のプログラムのみが実行を許可されます。デフォルトは /usr/local/php/bin です。
- –魔法の引用符を有効にする
- 魔法の引用符はデフォルトで有効になっています。
- –短いタグを無効にする
- 省略された PHP 開始タグ はデフォルトで禁止されています。
- サーバーオプション
- –with-aolserver=DIR
- インストールされている AOLserver のパスを指定します。
- –with-apxs[=FILE]
- Apache モジュールをコンパイルして共有します。 FILE は、オプションの Apache apxs ツールへのパスです。デフォルトは apxs です。指定された apxs バージョンが、Apache ソース プログラム内のパッケージではなく、インストールされたファイルであることを確認してください。
- –with-Apache[=DIR]
- Apache モジュールをコンパイルします。 DIR は、Apache ソース プログラムの最上位ディレクトリです。デフォルトは /usr/local/apache です。
- –with-mod_charset
- mod_charset (Apache) で転送テーブルをアクティブ化します。
- –with-apxs2[=ファイル]
- 共有 Apache 2.0 モジュールをコンパイルします。 FILE は、オプションの Apache apxs ツールへのパスです。デフォルトは apxs です。
- –with-fhttpd[=DIR]
- fhttpd モジュールをコンパイルします。 DIR は fhttpd のソース コード パスで、デフォルトは /usr/local/src/fhttpd です。
- –with-isapi=DIR
- PHP を Zeus 用の ISAPI モジュールにコンパイルします。
- –with-nsapi=DIR
- インストールされている Netscape サーバーのパスを指定します。
- –with-phttpd=DIR
- まだ情報はありません。
- –with-pi3web=DIR
- PHP を Pi3Web 用のモジュールにコンパイルします。
- –with-roxen=DIR
- PHP を Pike モジュールにコンパイルします。 DIR は Roxen のルート ディレクトリで、通常は /usr/local/roxen/server です。
- –enable-roxen-zts
- Roxen モジュールをコンパイルし、Zend Thread Safety を使用します。
- –サーブレット付き[=DIR]
- サーブレットのサポートが含まれています。 DIR は、JSDK の基本的なインストール ディレクトリです。この SAPI には、共有 DL にコンパイルする必要がある Java 拡張機能が必要です。
- –with-thttpd=SRCDIR
- PHP を thttpd モジュールにコンパイルします。
- –with-tux=MODULEDIR
PHPにパラメータを渡す2つの方法。
(mysql) データ型の意味を書き留めてください (int char varchar datetime text) varchar と char の違いは何ですか;
SQLコード
-
char は固定長型、varchar は可変長型です。これらの違いは次のとおりです。
- char(M) 型のデータ列では、各値が M バイトを占めます。特定の長さが M より小さい場合、MySQL は右側にスペース文字を埋め込みます。 (埋め込まれたスペース文字は検索操作中に削除されます。)
varchar(M) タイプのデータ列では、各値はその長さを記録するのに十分なバイトと 1 バイトのみを占めます (つまり、合計の長さは L です)。 +1バイト)。 -
列の型変換が必要かどうかを決定するために MySQL で使用されるルール -
-
1. データテーブルでは、各データ列の長さが固定されている場合、各データ行の長さも固定されます。 -
2. データテーブルに可変長のデータ列がある限り、各データ行の長さは可変になります。 -
3. 特定のデータ テーブル内のデータ行の長さが可変の場合、ストレージ領域を節約するために、MySQL はデータ テーブル内の固定長データ列を対応する可変長タイプに変換します。 -
例外: 長さが 4 文字未満の - char データ列は
varchar 型に変換されません -
固定長-
長さは無限大-
a - char(10)
-
b varchar(10)
-
それらをすべて'abc'に預けてください
-
10バイト
b 3バイト-
-
error_reporting およびその他のデバッグ関数が使用されます
バージョン管理ソフトウェアを使用したことがありますか?使用した場合、使用したバージョン管理ソフトウェアの名前は何ですか?
posix と perl の標準正規表現の違い;
PHPコード
- 正規表現 (regexp、regex、または regxp と略される) は、正規表現、正規表現、または正規表現、または正規化された表現、または正規表現とも呼ばれ、一連の文字列を説明または一致させるために使用される単語を指します。特定の構文ルールに準拠します。多くのテキスト エディターやその他のツールでは、特定のパターンに一致するテキスト コンテンツを取得したり置換したりするために正規表現がよく使用されます。多くのプログラミング言語は、正規表現を使用した文字列操作をサポートしています。たとえば、Perl には強力な正規表現エンジンが組み込まれています。正規表現の概念は、もともと Unix のツール ソフトウェア (sed や grep など) によって普及しました。 (ウィキペディアより抜粋)
-
- PHP は 2 つの正規表現ルール セットを同時に使用します。1 つは電気電子学会 (IEEE) によって開発された POSIX 拡張 1003.2 互換正規表現です (実際、この標準に対する PHP のサポートは完全ではありません)。もう 1 つは PCRE のものです ( Perl 互換正規表現ライブラリは、PERL 互換の正規表現を提供します。これは、Philip Hazel によって作成されたオープン ソース ソフトウェアです。
-
- POSIX 互換性ルールを使用する関数は次のとおりです:
- ereg_replace()
- エレグ()
- エレギ()
- eregi_replace()
- 分割()
- スプリティ()
- sql_regcase()
- mb_ereg_match()
- mb_ereg_replace()
- mb_ereg_search_getpos()
- mb_ereg_search_getregs()
- mb_ereg_search_init()
- mb_ereg_search_pos()
- mb_ereg_search_regs()
- mb_ereg_search_setpos()
- mb_ereg_search()
- mb_ereg()
- mb_eregi_replace()
- mb_eregi()
- mb_regex_encoding()
- mb_regex_set_options()
- mb_split()
-
- PERL 互換性ルールを使用する関数は次のとおりです:
- preg_grep()
- preg_replace_callback()
- preg_match_all()
- preg_match()
- preg_quote()
- preg_split()
- preg_replace()
-
- 区切り文字:
-
- POSIX 互換の正規表現には区切り文字がなく、関数の対応するパラメータは正規表現とみなされます。
-
- PERL 互換の正規表現では、文字、数字、バックスラッシュ () 以外の任意の文字を区切り文字として使用できます。区切り文字として使用される文字を式自体で使用する必要がある場合は、バックスラッシュでエスケープする必要があります。 ()、{}、[]、 を区切り文字として使用することもできます
-
- 修飾子:
-
- POSIX 互換の正規表現には修飾子がありません。
-
- 正規表現で使用できる Perl 互換の修飾子 (修飾子のスペースと改行は無視され、他の文字はエラーの原因になります):
-
- i (PCRE_CASELESS):
- マッチング時に大文字と小文字を無視します。
-
- m(PCRE_MULTILINE):
- この修飾子が設定されている場合、行の先頭 (^) と行の末尾 ($) は文字列全体の先頭と末尾に一致するだけでなく、改行文字 (n) の前後でも一致します。
-
- s(PCRE_DOTALL):
- この修飾子が設定されている場合、パターン内のドット メタ文字 (.) は改行を含むすべての文字と一致します。この設定を行わないと、改行文字は含まれません。
-
- x(PCRE_EXTENDED):
- この修飾子が設定されている場合、パターン内の空白文字は、エスケープされた文字または文字クラス内の空白文字を除き、完全に無視されます。
-
- エ:
- この修飾子が設定されている場合、preg_replace() は置換文字列内の後方参照の通常の置換を実行し、それを PHP コードとして評価し、その結果を使用して検索文字列を置換します。 preg_replace() のみがこの修飾子を使用し、他の PCRE 関数はそれを無視します。
-
- A (PCRE_ANCHORED):
- この修飾子が設定されている場合、パターンは強制的に「アンカー」されます。つまり、ターゲット文字列の先頭からのみ一致するように強制されます。
-
- D(PCRE_DOLLAR_ENDONLY):
- この修飾子が設定されている場合、パターン内の行末 ($) はターゲット文字列の末尾にのみ一致します。このオプションを指定しないと、最後の文字が改行文字の場合も一致します。 m 修飾子が設定されている場合、このオプションは無視されます。
-
- S:
- パターンが複数回使用される場合は、マッチングを高速化するために最初に分析する価値があります。この修飾子が設定されている場合、追加の分析が実行されます。現在、パターンの分析は、単一の固定開始文字を持たない非アンカー パターンにのみ役立ちます。
-
- U(PCRE_UNGREEDY):
- 「?」のデフォルトのマッチングを貪欲にします。
-
- X(PCRE_EXTRA):
- パターン内のバックスラッシュの後に特別な意味のない文字が続くとエラーが発生するため、この組み合わせは将来の拡張のために保存されます。デフォルトでは、バックスラッシュの後に特別な意味を持たない文字が続くと、その文字そのものとして扱われます。
-
- u(PCRE_UTF8):
- パターン文字列は UTF-8 として扱われます。
-
- 論理セグメンテーション:
-
- POSIX 互換の正規表現と PERL 互換の正規表現の論理区切り記号は、機能と使用法がまったく同じです。
- []: 選択した操作に関連する情報が含まれます。
- {}: 一致の数に関する情報が含まれます。
- (): 論理間隔の関連情報が含まれており、参照操作に使用できます。
- |: は「または」を意味し、[ab] と a|b は同等です。
-
- メタキャラクターは「[]」に関連しています:
-
- メタキャラクターには 2 つの異なるセットがあります。1 つは角括弧を除くパターン内で認識され、もう 1 つは角括弧 "[]" 内で認識されます。
-
- POSIX 互換の通常および PERL 互換の通常の "[]" および "一貫した" メタキャラクター:
- いくつかの用途があるユニバーサルエスケープ文字
- ^ 文字列の先頭と一致します
- $ は文字列の末尾と一致します
- 0 または 1 に一致しますか?
* 以前に指定されたタイプの 0 個以上の文字と一致します -
+ は、以前に指定されたタイプの 1 つ以上の文字と一致します -
-
POSIX 互換の正規表現および PERL 互換の正規表現の「[] の外側」および「一貫性のない」メタキャラクター: -
PERL 互換の正規表現は改行文字を除く任意の文字に一致します -
POSIX 互換の正規の文字に一致します -
-
POSIX 互換の通常および PERL 互換の通常の「[] 内」の「一貫した」メタキャラクタ: -
いくつかの用途があるユニバーサルエスケープ文字 -
^ は文字を否定しますが、それが最初の文字の場合にのみ機能します -
- 文字の ASCII 範囲を指定し、ASCII コードを注意深く調べてください。[W-c] が [WXYZ\^_`abc] と同等であることがわかります -
-
POSIX 互換の通常および PERL 互換の通常の「一貫性のない」メタキャラクター「[] 内」: -
- POSIX 互換の正規表現で [a-c-e] を指定すると、エラーがスローされます。 -
- PERL 互換の正規表現における [a-c-e] の指定は、[a-e] と同等です。 -
-
一致の数は「{}」に関連しています: -
-
POSIX 互換の正規表現と PERL 互換の正規表現は、マッチング時間の点ではまったく同じです。 -
{2}: 前の文字と 2 回一致することを示します -
{2,}: 前の文字と 2 回以上一致することを示します。デフォルトは貪欲な (可能な限り多くの) 一致です。
- {2,4}: 前の文字と 2 回または 4 回一致することを示します
-
- 論理間隔は「()」に関連しています:
-
- () で囲まれた領域は論理間隔です。論理間隔の主な機能は、いくつかの文字が出現する論理順序を反映することです。別の用途として、この間隔の値を参照することができます。変数に代入します)。後者の効果はかなり奇妙です:
-
-
$str = "http://www.163.com/";
// POSIX 互換の通常のルール:
-
echo
ereg_replace(- "(.+)","\1",$str);
// PERL 互換の正規表現:
echo preg_replace("/(.+)/","$1",
$str);
- ?>
引用する場合、括弧は入れ子にすることができ、論理的な順序は「(」の出現順序に従って調整されます。
タイプマッチング:
-
[:upper:]: すべての大文字と一致します -
[: lower:]: すべての小文字と一致します -
[:alpha:]: すべての文字と一致します -
[:alnum:]: すべての文字と数字に一致します -
[:digit:]: すべての数字と一致します -
[:xdigital:]: [0-9A-Fa-f] に相当するすべての 16 進文字と一致します -
[:punct:]: [.,"'?!;:] と同等のすべての句読点に一致します -
[:blank:]: スペースと TAB に一致し、[ t] と同等です -
[:space:]: [ tnrfv] と同等のすべての空白文字に一致します -
[:cntrl:]: ASCII 0 ~ 31 のすべての制御文字と一致します。 -
[:graph:]: [^ tnrfv] と同等のすべての印刷可能な文字に一致します。
- [:print:]: [^tnrfv] と同等の、すべての印刷可能な文字とスペースに一致します。
[.c.]:不明な機能-
[=c=]:不明な関数 -
[:<:>
[:>:]: 単語の末尾と一致します
PERL 互換の正規表現 (ここで PERL 正規表現の威力を確認できます):
アラーム、つまりBEL文字(’0)
cx
「control-x」、x は任意の文字
エスケープ(’0B)
フォームフィード ('0C)
n 改行文字改行 ('0A)
r 馬車
return (’0D)
タブ(’0)
xhh 16 進コードが hh である文字
ddd 8 進コードが ddd である文字、または後方参照
d 任意の 10 進数
D 小数点以外の任意の文字
s 任意の空白文字
S 空白以外の文字
w 「単語」の任意の文字
W 任意の「非単語」文字
b単語分割線
B 非文字分割線
ターゲットの先頭 (複数行モードとは独立)
Z ターゲットの終わり、または末尾の改行の前 (複数行モードとは独立)
z ターゲットの終わり (複数行モードとは独立)
G ターゲット内で最初に一致する位置
セーフモードをオンにするとどのエリアが制限されますか?
複数のプロセス/スレッドが同時にファイルを読み書きする問題を解決するコードを作成します。
PHPコード
- ご存知のとおり、PHP にはマルチスレッドの概念がありませんが、「不完全な」メソッドを使用してマルチスレッドをシミュレートすることはできます。簡単に言うとキュー処理です。これは、ファイルをロックおよびロック解除することによって実現されます。あるユーザーがファイルを操作すると、そのファイルはロックされ、他のユーザーは待つことしかできなくなりますが、要件が低い一部のアプリケーションにも対応できます。
- 関数 T_put($ファイル名,$文字列){
- $fp = fopen($filename,'a')
- if (flock($fp, LOCK_EX)){
- fputs($fp,$string);
- flock($fp, LOCK_UN)
- }
- fclose($fp);
}
- 関数 T_get(
- $ファイル名,$長さ){
$fp = - fopen($filename,'r') //追加モードで開く
if (- flock($fp, LOCK_SH)){ //読み取りロックを追加します
$result = - fgets($fp,$length) //ファイルを読み取る
flock(- $fp, LOCK_UN) //ロックを解除する
}
- fclose(
$fp);
- $結果を返す
-
}
ファイルをアップロードするコードを記述します。 -
Mysql ストレージ エンジン、myisam と innodb の違い。
SQLコード
- シンプルな表現。
- MyISAM は非トランザクション ストレージ エンジンです。
- innodb はトランザクションをサポートするストレージ エンジンです。
-
- Innodb のエンジンは、多くの挿入と更新操作を行うアプリケーションにより適しています
- MyISAM は頻繁にクエリを行うアプリケーションに適しています
-
- MyISAM
- innodb
- MyISAM はデッドロックを引き起こしません。
-
- 最大の違いは、MYISAM は小規模なデータと小規模な同時実行に適しており、INNODB は大きなデータと大規模な同時実行に適していることです。最大の違いはロックレベルにあります。
-
- MyISAM タイプはトランザクション処理などの高度な処理をサポートしませんが、InnoDB タイプはサポートします。 MyISAM タイプのテーブルはパフォーマンスを重視しており、その実行時間は InnoDB タイプよりも高速ですが、トランザクション サポートは提供されていません。一方、InnoDB はトランザクション サポートと外部キーなどの高度なデータベース機能を提供します。要約すると、データ テーブルのさまざまな用途に応じて、さまざまなストレージ タイプを使用できます。さらに、MyISAM はファイル ストレージであり、異なるオペレーティング システム間で直接コピーできます。
-
- InnoDB:
- InnoDB は、トランザクション (コミット)、ロールバック (ロールバック)、およびクラッシュ回復機能 (クラッシュ回復機能) を備えたトランザクションセーフ (トランザクションセーフ (ACID 準拠)) テーブルを MySQL に提供します。 InnoDB は、Oracle タイプと一貫した行ロック (行 レベルでのロック ) を提供し、非ロック読み取り (SELECT 内の非ロック 読み取り ) を提供します。これらの機能により、マルチユーザーの同時操作のパフォーマンスが向上します。 InnoDB の列ロック (行 レベルのロック) は非常に小さなスペースに収まるため、InnoDB テーブルでロックを拡張する (ロック エスカレーション) 必要はありません。 InnoDB は、外部キー制約 (FOREIGN KEY 制約) を提供する MySQL 上の最初のテーブル エンジンです。 InnoDB は大容量データベース システムを処理できるように設計されており、その CPU 使用率は他のディスク ベースのリレーショナル データベース エンジンに匹敵しません。技術的には、InnoDB は MySQL のバックグラウンドに配置される完全なデータベース システムであり、データとインデックスをキャッシュするためにメイン メモリ内に独自の専用バッファ プールを確立します。 InnoDB は、データとインデックスをテーブル スペースに格納します。テーブル スペースには複数のファイルが含まれる場合があります。これは、たとえば、MyISAM では、テーブルが別個のファイルに格納されます。 InnoDB テーブルのサイズは、オペレーティング システムのファイル サイズによってのみ制限されます。通常は 2 GB です。 InnoDB のすべてのテーブルは同じデータ ファイル ibdata1 に保存されます (複数のファイルまたは独立したテーブル スペース ファイルである場合もあります)。ファイルをコピーするか、mysql の navicat を使用することができます。
-
- マイサム
- 各 MyISAM テーブルは 3 つのファイルに保存されます: frm ファイルにはテーブル定義が保存されます。データファイルはMYD(MYData)です。インデックスファイルはMYI(MYIndex)の拡張子です。
- MyISAM は比較的シンプルであるため、効率の点で InnoDB より優れています。小規模なアプリケーションには MyISAM を使用するのが良い選択です。
- MyISAM テーブルはファイルとして保存されます。クロスプラットフォームのデータ転送で MyISAM ストレージを使用すると、多くの手間が省けます。
2. Web アーキテクチャ、セキュリティ、プロジェクトの経験
3. unix/linux の基本的な使い方
4. フロントエンド、HTML、JS
次の文のうち、John を users 配列に追加しないものはどれですか?
$users[] = 'john';
John が users 配列に正常に追加されました。
array_add($users,’john’);
関数 array_add() には定義がありません。
array_push($users,‘john’);
John を配列 users に正常に追加しました。
$users ||= 'john';
構文エラー。
2.sort()、assort()、ksort()の違いは何ですか?どのような状況で使用されますか?
sort()
配列内の要素の値に基づいて英語のアルファベット順にソートし、インデックスキーが0からn-1まで番号が付け直されます。主に、配列のインデックス キーの値が無関係な場合に配列をソートするために使用されます。
assort()
PHPにはassort()関数がないので、asort()のタイプミスである可能性があります。
asort()
sort() と同様に、配列の要素を英語のアルファベット順に並べます。違いは、すべてのインデックス キーが保持されることです。これは、連想配列の並べ替えに特に適しています。
ksort()
配列内のインデックスキーの値に従って英語のアルファベット順にソートします。インデックスキーをソートしたい連想配列に特に適しています。
3.次のコードは何を生成しますか?なぜ?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
関数 multiply() は $num をグローバル変数として指定していないため (グローバル $num または $_GLOBALS['num'] など)、$num の値は 10 です。
4. 参照変数と通常の変数の違いは何ですか?参照渡しするにはどうすればよいですか?どのような状況でこれを行う必要がありますか?
Reference は変数の値ではなくアドレスを転送するため、関数内で変数の値が変更されると、アプリケーション全体がその変数を参照します。