當前位置:首頁 » 編程語言 » php非同步庫

php非同步庫

發布時間: 2022-08-02 08:34:35

php 如何非同步插入資料庫

頁面1.php裡面寫具體的執行語句
頁面2.php直接使用curl調用頁面1.php 並設置超時時間;根據你自己的需求寫但是你不一定如果超時時間內 資料庫沒執行玩 那你可能就獲取不到插入結果了
訪問2.php應該就是你說的非同步了

❷ php 怎樣在同一個文件里進行非同步執行

PHP是順序執行的語言,註定無法單獨依靠PHP本身去實現非同步執行。
但可以藉助比如在HTML中ajax的非同步請求去實現自己想要的效果。

❸ php的CI框架如何實現非同步調用

在你自定義的類庫中初始化CodeIgniter資源

要你自定義的類庫中訪問CodeIgniter的原始資源,你必須使用 get_instance() 函數.這個函數返回一個CodeIgniter super object.

一般來說在你的控制器函數中你可以通過 $this 調用任何可用的CodeIgniter函數:
$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');
//etc.
$this, 只直接作用在你自己的控制器,模型和視圖中.當你在自定義類中想使用CodeIgniter原始類時,你可以這樣做:

首先,定義CodeIgniter對象賦給一個變數:
$CI =& get_instance();
一旦定義某個對象為一個變數,你就可以使用那個變數名 取代 $this:
$CI =& get_instance();

$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
//etc.
注意: 你將注意到get_instance()這個函數通過被引用的方式被傳遞:

$CI =& get_instance();

這十分重要. 通過引用的方式賦給變數將使用原始的 CodeIgniter 對象,而不是創建一個副本。

//------------------------------------------------------------------------------------------------//
我想這也許是你需要的.$CI =& get_instance();之後再用$CI->load->library('session');等方法載入你需要的

❹ 在php中如何向資料庫中非同步插入圖片

一般不向資料庫插入圖片 而是插入圖片的src 通過src找到圖片然後顯示。
(更多非同步問題http://bbs.hounwang.com)
<?php
session_start();
//array數組中放圖片的格式
$uptypes = array("image/jpg","image/jpeg","image/png","image/pjpeg","image/gif","image/bmp","image/x-png");
$files =$_FILES["uppic"];
if($files["size"]>2097152){ //圖片大小判斷
echo "上傳圖片不能大於2M";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
exit;
}
$ftype =$files["type"];
if(!in_array($ftype,$uptypes)){ //圖片格式判斷
echo "上傳的圖片文件格式不正確";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
}
$fname = $files["tmp_name"]; //在伺服器臨時存儲名稱
$image_info = getimagesize($fname);
$name = $files["name"];
$str_name = pathinfo($name); //以數組的形式返迴文件路勁的信息
$extname = strtolower($str_name["extension"]); //把字元串改為小寫 extensiorn擴展名
$upload_dir = "upload/"; //upload文件夾
$file_name = date("YmdHis").rand(1000,9999).".".$extname;
$str_file = $upload_dir.$file_name; //文件目錄
//存入資料庫
$con=mysql_connect("localhost","root","");
if(!$con){
die(("資料庫連接失敗").mysql_error());
}
mysql_select_db("mywork",$con);
$sql="update user set picpath='$str_file' where user_name='$username'"; //將圖片地址插入資料庫mywork
mysql_query($sql,$con);
mysql_close($con);
if(!file_exists($upload_dir)){
mkdir($upload_dir); //創建目錄 成功則返回true 失敗則返回flase
}
if(!move_uploaded_file($files["tmp_name"],$str_file)){ //將上傳的文件移動到新的目錄 要移動文件 和文件新目錄 成功則返回true
echo "圖片上傳失敗";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入失敗後希望跳轉的頁面>";
}
else{
//echo "<img src=".$str_file.">";
echo "圖片上傳成功";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入成功希望挑戰的頁面>";
}

❺ 請教PHP的非同步處理,pcntl

client:
<?php
$client=newGearmanClient();
$client->addServer('127.0.0.1', 4730);//本機可以直接addServer(),默認伺服器端使用4730埠
$client->setCompleteCallback('completeCallBack');//先綁定才有效

$result1=$client->do('say','do');//do是同步進行,進行處理並返回處理結果。
$result2=$client->doBackground('say','doBackground');//非同步進行,只返回處理句柄。
$result3=$client->addTask('say','addTask');//添加任務到隊列,同步進行?通過添加task可以設置回調函數。
$result4=$client->addTaskBackground('say','addTaskBackground');//添加後台任務到隊列,非同步進行?
$client->runTasks();//運行隊列中的任務,只是do系列不需要runTask()。

echo'result1:';
var_mp($result1);
echo'<br/>';

echo'result2:';
var_mp($result2);
echo'<br/>';

echo'result3:';
var_mp($result3);
echo'<br/>';

echo'result4:';
var_mp($result4);
echo'<br/>';

//綁定回調函數,只對addTask有效
functioncompleteCallBack($task)
{
echo'CompleteCallback!handle result:'.$task->data().'<br/>';
}

worker:
<?php
$worker=newGearmanWorker();
$worker->addServer();
$worker->addFunction('say',function(GearmanJob$job){
$workload=$job->workload();//接收client傳遞的數據
echo'receive data:'.$workload.PHP_EOL;
returnstrrev($workload);//僅作反轉處理
});

//無際循環運行,gearman內部已有處理,不會出現佔用過高死掉的情況
while($worker->work()){
if($worker->returnCode() !== GEARMAN_SUCCESS){
echo'error'.PHP_EOL;
}
}

以上client輸出:
CompleteCallback!handle result:ksaTdda
result1:string(2) 「od」
result2:string(17) 「H:iZ943bixttyZ:87″
result3:object(GearmanTask)#2 (0) { }
result4:object(GearmanTask)#3 (0) { }
worker輸出:
receive data:do
receive data:doBackground
receive data:addTaskBackground
receive data:addTask

❻ 我想通過PHP非同步操作執行一些代碼應該怎麼做

好的程序應該盡可能少的去讀取資料庫,而不是像你說的還100毫秒讀取一次。這樣的需求本身就很有問題哦

❼ php如何實現腳本非同步執行的方法具體分析

php語言得用fsockopen()函數,實現腳本非同步運行,代碼如下

非同步請求函數(用debug參數若為true則為用為調試,開啟調試可以看到非同步的執行情況,但是失去非同步的效果)

main.php


<?php

/**
*非同步請求
*@rightCopyright(c)HangzhouTechnologyCo.,Ltd.(https://www.5wx.org)
*@author$Author:juny$
*@version$Id:main.php3322018-09-2309:15:08Zjuny$
*/

functionrequest_by_fsockopen($url,$post_data=array(),$debug=false){
$url_array=parse_url($url);
$hostname=$url_array['host'];
$port=isset($url_array['port'])?$url_array['port']:80;
@$requestPath=$url_array['path']."?".$url_array['query'];
$fp=fsockopen($hostname,$port,$errno,$errstr,10);
if(!$fp){
echo"$errstr($errno)";
returnfalse;
}
$method="GET";
if(!empty($post_data)){
$method="POST";
}
$header="$method$requestPathHTTP/1.1 ";
$header.="Host:$hostname ";
if(!empty($post_data)){
$_post=strval(NULL);
foreach($post_dataas$k=>$v){
$_post[]=$k."=".urlencode($v);//必須做url轉碼以防模擬post提交的數據中有&符而導致post參數鍵值對紊亂
}
$_post=implode('&',$_post);
$header.="Content-Type:application/x-www-form-urlencoded ";//POST數據
$header.="Content-Length:".strlen($_post)." ";//POST數據的長度
$header.="Connection:Close ";//長連接關閉
$header.=$_post;//傳遞POST數據
}else{
$header.="Connection:Close ";//長連接關閉
}
fwrite($fp,$header);
//-----------------調試代碼區間-----------------
//注如果開啟下面的注釋,非同步將不生效可是方便調試
if($debug){
$html='';
while(!feof($fp)){
$html.=fgets($fp);
}
echo$html;
}
//-----------------調試代碼區間-----------------
fclose($fp);
}
$data=array('name'=>'guoyu','pwd'=>'123456');
$url='http://localhost/test/other.php';
request_by_fsockopen($url,$data,true);//


other.php


<?php
header("content-type:text/html;charset=utf-8");
//error_reporting(0);
//ini_set('html_errors',false);
//ini_set('display_errors',false);
$name=isset($_POST['name'])?$_POST['name']:'';
$pwd=isset($_POST['pwd'])?$_POST['pwd']:'';
echo$name.$pwd;
echo'successok';
die;
?>

使用實例:


[運行的main.php主腳本文件]$data=array('name'=>'guoyu','pwd'=>'123456');
$url='http://localhost/test/other.php';

request_by_fsockopen($url,$data,true);//把應用B的用戶表非同步-同步數據
[導步執行文件other.php]

在other.php中便可以用$_POST接收main.php提交過來的參數,從而進行下一步操作

以上就是php如何實現腳本非同步執行的方法具體分析的詳細內容.

❽ php redis做mysql的緩存,怎麼非同步redis同步到mysql資料庫

<?phpforeach($_POST as $key => $val) $$key=trim($val); //接收提交的數據?><form method="post" action=""> <input type="text" name="value" value="<?php echo $value ; ?>"/> <input type="submit" name="send" value="send"/></form>action=""表示表單提交到本頁面,用php處理一下就行,也可以去後盾人學習一下,看看高清教學視頻.

❾ PHP中非同步訪問

這個推薦你用jquery來實現.
jquery的ajax實現中,直接有對json的處理.
=========
jquery的手冊中的例子
=============
從 test.js 載入 JSON 數據,附加參數,顯示 JSON 數據中一個 name 欄位數據。

jQuery 代碼:

$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){
alert("JSON Data: " + json.users[3].name);
});

熱點內容
電腦伺服器詳細介紹圖 發布:2025-01-23 12:03:42 瀏覽:155
社保查詢密碼是什麼東西 發布:2025-01-23 12:03:35 瀏覽:63
御龍在天腳本輔助 發布:2025-01-23 11:57:16 瀏覽:886
我的世界電腦版伺服器號碼 發布:2025-01-23 11:57:14 瀏覽:980
小科編程 發布:2025-01-23 11:48:55 瀏覽:673
安卓手機如何禁止未知軟體安裝 發布:2025-01-23 11:47:31 瀏覽:690
腳本我是一 發布:2025-01-23 11:44:27 瀏覽:642
安卓的哈靈麻將哪裡下 發布:2025-01-23 11:26:17 瀏覽:230
全本免費閱讀器在哪緩存 發布:2025-01-23 11:14:54 瀏覽:440
傳輸數據加密 發布:2025-01-23 11:03:20 瀏覽:256