亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以下PHP腳本的執行流程是怎樣的?

以下PHP腳本的執行流程是怎樣的?

PHP
當年話下 2023-04-21 14:09:26
這是兩個文件:this_one.php    <?php     include_once("other_one.php");    $n1 = $_POST['name'];    $n2 = $_POST['password'];    echo "From this_one.php ".$n1." ".$n2."<br>";    ?><form action="" method="POST">    <input type="text" name="name">    <input type="password" name="password">    <button type="submit" name="Submit">Login</button></form>other_one.php<?php $name = $_POST['name'];$pass = $_POST['password'];echo "From other_one.php".$name." ".$pass."<br>";?>現在,當我在某處閱讀時,如果表單操作留空,則 POST 將發送到腳本本身。other_one.php 也包含在文件 this_one.php 中但是當我在瀏覽器中運行時,輸出是:From other_one.php hello passFrom this_one.php hello pass一切是如何工作的,為什么會收到這個輸出?PS:不要向我解釋它是如何include_once工作的。我所說的是,對于 10 個進程,腳本將從第 1 行一直運行到最后,如果我在包含的文件中打開一個到數據庫的連接,這樣我將創建相同的 $connection 實例 10 次,這將是一項開銷。為所有這 10 個線程共享單個數據庫實例的方法是什么?
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

該include指令將指定文件中的代碼帶入作用域。從心理上講,您只需將 include 指令替換為該文件內的代碼塊,實際上并沒有什么區別。知道這一點,您的代碼實際上是:


? ? <?php?


? ? //include_once("other_one.php");

? ? $name = $_POST['name'];

? ? $pass = $_POST['password'];


? ? echo "From other_one.php".$name." ".$pass."<br>";


? ? $n1 = $_POST['name'];

? ? $n2 = $_POST['password'];


? ? echo "From this_one.php ".$n1." ".$n2."<br>";

? ? ?>


<form action="" method="POST">

? ? <input type="text" name="name">

? ? <input type="password" name="password">

? ? <button type="submit" name="Submit">Login</button>

</form>

編輯

有四個指令用于將代碼引入當前進程/請求的范圍。在我命名它們之前,請注意我說的是當前流程/請求。如果有 10 個人點擊了您的登錄頁面,您將有 10 個進程/請求。同樣,如果 1 個人點擊您的登錄頁面 10 次,您也將有 10 個進程/請求。這是 PHP 的本質,除非您真正注意到性能問題,否則我不會為此擔心。

這四個指令是include、include_oncerequire。require_once以 結尾的指令_once保證所提供的文件只會被帶入進程一次。其他兩個指令允許每個進程多次包含一個文件。include和之間的區別require很微妙,但include如果找不到文件,基本上會生成可忽略的警告,而require會拋出致命錯誤。

一般來說,我個人總是建議您使用require_oncefor all include?,除非您明確有理由多次引入代碼。例如,如果您有一個分頁器小部件需要位于表格的頂部和底部,那么多次包含同一文件是一個很好的用途。我從來沒有使用過includeorinclude_once因為我無法想象一個包含問題的場景對我來說是可以接受的。

此外,作為旁注,PHP 以一種可能令人驚訝的方式解析文件的路徑。例如,如果您使用include 'file.php';它實際上并不意味著將文件包含在當前目錄中。相反,有一個管理員可以設置的可選“包含路徑”(就我而言,可以說是遺留原因),并使用該語法首先搜索包含路徑。如果您沒有包含路徑,或者在該路徑中找不到該文件,使用本地文件夾。出于這個原因,我建議始終使用“路徑語義”來包含文件,這幾乎可以歸結為以句點或正斜杠或諸如__DIR__.


查看完整回答
反對 回復 2023-04-21
  • 1 回答
  • 0 關注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號