我有以下问题.
程序客户端向服务器发送HTTPS操作.服务器获取所需的操作和所有参数.但是,当被调用的PHP脚本工作时,客户端会断开连接.
脚本回应响应,客户端不会得到任何不应该的响应.因为它是重要的操作,客户端应该总是得到响应,我想在这种情况发生时阻止PHP脚本执行.
整个脚本都在MySQL事务中,因此如果它死了,则会发生数据库回滚,这是必不可少的.
我已将此代码放在脚本的最后
ob_end_clean();
header("Connection: close");
ignore_user_abort();
ob_start();
echo $response->asXML();
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
if ( connection_aborted() )
log('Connection aborted');
else
log('Connection is fine');
Run Code Online (Sandbox Code Playgroud)
但是connection_aborted总是返回0(NORMAL CONNECTION),因此脚本总是执行.
connection_status也没有帮助,所以我不知道还有什么可以尝试.
编辑:
我发现,只有在使用AJAX请求调用脚本时,这才会起作用.当使用常规HTTP调用它时,它表明连接已经死亡.但是,当我用new XMLHttpRequest()它调用它时,从来没有想到连接已关闭.
它是异步请求.
所以我设法缩小了范围.但我仍然不知道如何解决它.
所以我遇到了一个问题。我有这个对象叫做myTree. 该对象具有属性。其中一个属性包含这样的方法:
prep: function (variable) {
/* some code */
}
Run Code Online (Sandbox Code Playgroud)
在该方法中有一个数组myarray,我想知道是否可以访问该数组的内容,如果可以,我将如何执行此操作。
我做了对的jsfiddle演示,并在JavaScript窗口结束时,你可以看到,我提醒对象prep中myarray包含。
我的module.config.php文件中有一个控制台路由
'console' => [
'router' => [
'routes' => [
'remove' => [
'type' => 'simple',
'options' => [
'route' => 'remove [force] [init]',
'defaults' => [
'controller' => Controller\CliController::class,
'action' => 'remove',
],
],
]
]
]
]
Run Code Online (Sandbox Code Playgroud)
我的控制器有方法removeAction()
namespace Controller;
class CliController extends AbstractActionController
{
public function removeAction()
{
$this->logger->debug('I am in');
}
}
Run Code Online (Sandbox Code Playgroud)
当我做命令php public/index.php remove force或php public/index.php remove
我永远不会被发送到控制器,没有错误或任何输出.那我在做错配对吗?
这就像app没有意识到它是从终端调用的.有时它只是返回,html如果我getConfig从Module.php我的内部删除方法module/MyModulefolder.
我正在尝试复制具有相对行名称和列名称的公式。
我有包含 10 个公式的基本列,我尝试在右侧的列上复制公式 5 次。
例如,在基列中,我有这个公式=A1+B1,我想使下一个单元格=B1+C1,下一个=C1+D1,依此类推。
我有这个代码
For i = 1 To Range("B1").Value
For j = 1 To 10
Sheet2.Cells(5 + j, 2 + i).FormulaR1C1 = "=c[-1]"
Next j
Next i
Run Code Online (Sandbox Code Playgroud)
但这只是从左侧单元格复制值
如果公式相同但不同,那就很容易了。所以我试图找到一种方法来动态引用始终位于左侧的单元格。
这是真正的公式之一
='Balance sheet'!B13*360/'P&L'!B2
Run Code Online (Sandbox Code Playgroud)
我想要下一个单元格是
='Balance sheet'!C13*360/'P&L'!C2
Run Code Online (Sandbox Code Playgroud)
我现在的代码是下一个单元格=B3
我有在父组件中生成的事件,而子组件必须对其做出反应.我知道这不是推荐的方法vuejs2,我必须做一个$root非常糟糕的发射.所以我的代码是这样的.
<template>
<search></search>
<table class="table table-condensed table-hover table-striped" v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10">
<tbody id="trans-table">
<tr v-for="transaction in transactions" v-model="transactions">
<td v-for="item in transaction" v-html="item"></td>
</tr>
</tbody>
</table>
</template>
<script>
import Search from './Search.vue';
export default {
components: {
Search
},
data() {
return {
transactions: [],
currentPosition: 0
}
},
methods: {
loadMore() {
this.$root.$emit('loadMore', {
currentPosition: this.currentPosition
});
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样loadMore,在无限滚动时触发,并且正在将事件发送到子组件搜索.不仅仅是搜索,而是因为它是根,它正在向所有人广播.
什么是更好的方法.我知道我应该使用道具,但我不知道在这种情况下我怎么能这样做.
我最近将我的codeigniter网站切换到了新的虚拟主机,现在网站上的所有链接都被破坏了.每次我点击其中一个网站时,只会重定向到index.php.一切都在老服务器上工作没有任何问题.我不太了解服务器,问题是它是共享主机,我没有访问/ etc/apache2目录中的conf文件.
我的.htaccess文件是
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php
</IfModule>
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感谢.谢谢!
javascript ×2
php ×2
.htaccess ×1
ajax ×1
apache ×1
codeigniter ×1
connection ×1
excel ×1
https ×1
mysql ×1
object ×1
scope ×1
vba ×1
vue.js ×1
vuejs2 ×1