Rumah > Soal Jawab > teks badan
Pada masa ini terdapat beberapa peranti radar yang mengimbas kawasan tertentu Selepas mengimbas, data kira-kira 1.4 juta mata (setiap titik mengandungi 4 atribut) akan dikembalikan.
Kemudian peralatan radar menyambung data menjadi ,
分隔的字符串:"x1,y1,a1,p1,x2,y2,a2,p2......x1400000,y1400000,a1400000,p1400000"
Saiz rentetan ini hendaklah berpuluh-puluh megabait, kurang daripada 100 megabait.
Kod PHP diproses seperti ini:
$num=$_POST['num'];//点的总数量
$str=$_POST['str'];//点的4个属性组成的字符串
$str_arr=expload(',',$str);//将字符串转换为数组
//将数组转换成json字符串
$point=array();
for($n=1;$n<=$num;$n++){
$x=$str_arr[$n*4-4];
$y=$str_arr[$n*4-3];
$a=$str_arr[$n*4-2];
$p=$str_arr[$n*4-1];
$point[]=array("x"=>$x,"y"=>$y,"a"=>$a,"$p"=>$p);
}
$json_str=json_encode($point);
//将json字符串保存在".txt"文件中
$handle=fopen("./1.txt","w");
fwrite($handle, $json_str);
fclose($handle);
//返回请求成功信息
echo "ask=1&cmd=3";
exit;
Saya tidak tahu sangat tentang penggunaan memori, dan ini adalah kali pertama saya memproses jumlah data yang begitu besar
Apabila data yang dihantar oleh radar hanya 11Wtitik kumpulan (kira-kira 3MBdata), saya boleh berjaya menerima dan memprosesnya
Apabila Selepas data menjadi lebih besar sedikit, ia menggesa Had memori ialah 128M
Saya menyemak beberapa kaedah di Internet, kebanyakannya adalah untuk menukar php.ini
>php.ini
文件中memory_limit=-1
可是改了之后仍然无法传输
目前跟雷达端商量的是他每次最多给我传10W组点,然后再多个一个参数本次传输还剩多少点
Tetapi selepas menukarnya, ia masih tidak dapat dihantar
Pada masa ini, perbincangan dengan terminal radar ialah dia boleh menghantar saya maksimum
10W
Berapa banyak mata yang tinggal dalam penghantaran ini?
, selepas PHP menerimanya, ia akan diberikan kepadanya sebagai nilai pulangan, dan dia akan memanggil semula dan terus menghantarnya pada saya. Walau bagaimanapun, dikira dengan cara ini, ia memerlukan 14 hingga 15 penghantaran untuk menghantar satu set data pembangunan? 🎜Menunggu dalam talian. . . 🎜PHP中文网2017-05-27 17:44:31
ini_set('memory_limit', '500M'); //内存限制
set_time_limit(0); //执行超时,0代表无限等待
phpcn_u15822017-05-27 17:44:31
Soalan: Adakah gzip didayakan? Data JSON tulen jenis ini mempunyai kadar mampatan yang tinggi selepas ia dihidupkan. Selepas menukar had memori, sambungan rangkaian juga mungkin tamat masa.
滿天的星座2017-05-27 17:44:31
Ada had panjang badan yang diterima oleh pelayan web Jika terlalu panjang, ia tidak boleh diterima, seperti nginx-client_max_body_size
Penghantaran kelompok ialah penyelesaian yang lebih baik dalam mod web
Cara yang lebih baik ialah menggunakan penghantaran binari soket, yang tidak mempunyai pelbagai sekatan dalam mod web dan lebih cekap
仅有的幸福2017-05-27 17:44:31
Pertama sekali, rentetan anda menggunakan banyak memori Jika anda menukarnya kepada tatasusunan, ia akan mengambil banyak memori.
Bergantung pada keperluan anda, langkah terakhir ialah menukarnya kepada json dan menyimpannya ke fail Json juga merupakan rentetan, jadi mengapa tidak memprosesnya secara langsung sebagai rentetan.
Jika ia php7, anda tidak boleh menggunakan preg_replace dan perlu bertukar kepada preg_replace_callback untuk mengendalikannya
$str=$_POST['str'];//点的4个属性组成的字符串
$json_str = '['.substr(preg_replace('/([^,]+),([^,]+),([^,]+),([^,]+),/iU','{"x":"","y":"","a":"","p":""},',$str.','),0,-1).']';
//将json字符串保存在```.txt```文件中
$handle=fopen("./1.txt","w");
fwrite($handle, $json_str);
fclose($handle);
伊谢尔伦2017-05-27 17:44:31
Besarkan had memori dan tingkatkan volum data siaran. . Pada asasnya, tiada masalah untuk mengendalikan beberapa ratus megabait