Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript调用PHP对长文本进行递归写入_Php - Fatal编程技术网

Javascript调用PHP对长文本进行递归写入

Javascript调用PHP对长文本进行递归写入,php,Php,为了克服8K的URI限制,我必须使用一个重新创建的write-by 将长文本分解成块,并具有一个可调用简单PHP程序写入磁盘的重新编写函数 变量chunkAppend第一次设置为“”,然后设置为append以通知PHP程序进行追加。在我需要函数的回调来让调用者知道写磁盘的工作已经完成之前,这一切都很正常 当文本很小,只有一个块时,它工作正常,doneCallback()会按它应该做的做,告诉调用方它完成了。但当区块长度超过一个时,它会将多个区块写入磁盘并发出警报(phpwrited);但不是do

为了克服8K的URI限制,我必须使用一个重新创建的write-by 将长文本分解成块,并具有一个可调用简单PHP程序写入磁盘的重新编写函数

变量chunkAppend第一次设置为“”,然后设置为append以通知PHP程序进行追加。在我需要函数的回调来让调用者知道写磁盘的工作已经完成之前,这一切都很正常

当文本很小,只有一个块时,它工作正常,doneCallback()会按它应该做的做,告诉调用方它完成了。但当区块长度超过一个时,它会将多个区块写入磁盘并发出警报(phpwrited);但不是doneCallback(“完成”)

在递归过程中,javascript中会发生什么改变doneCallback()的情况

骨架如下:

<pre><code>

caller:
var chunkCnt;
var chunk=[];
var chunkAppend="";
var phpWritten="";

// set up chunk[] array and chunkCnt before call
writeChunk(url, 0, function(rtn) { alert(rtn); });

function writeChunk(url, start, doneCallback) {

 var prog="/acwphp/API_Write_TextFile.php?fullname="+ 
 encodeURIComponent(url) + chunkAppend + "&text=" + chunk[start];

  runExternalProg(prog, function(rtn) {
     // php return no of bytes written
     phpWritten = phpWritten + start + "--" + rtn + "\n";
     ++start;
     chunkAppend = "&append=yes";

     if (start >= chunk.length) { alert(phpWritten); 
            doneCallback(start+"..done.."); }
     else { writeChunk(url, start, function(rtn) {}); }
     });    
}
</code></pre>

没有通用的“8K的URI限制”。你为什么这么说?当然,在特定组件、软件组件中可能存在限制。但这实际上只是表明,您没有将一项技术用于它的设计目的,似乎您正试图提交更大的数据集作为http get参数。您不使用http post请求的具体原因是什么?这两个动词都存在是有原因的……我使用Hostgator服务,它的Apache服务器有8K的限制。如果文本长度超过8K,则错误消息称URI太长。我没有使用HTML表单,因此没有涉及get/post问题,也不确定如何使用它。http get或post请求与您是否有HTML表单无关。http协议是一种传输协议,它独立于内容。任何http客户端都可以执行post请求。很抱歉,我没有得到它。在Javascript中,我只需使用filename=…fullpath name…&txt=…long string…,构造一个PHP调用,那么我从哪里知道它是post还是get呢?PHP非常简单地使用_请求获取数据并写入文件,只需要十几行!