小编p01*_*ath的帖子

为什么Laravel会与每个Artisan Command一起调用schedule()?

我有一个表被调用dc_user_meta,我创建了一个工匠命令并安排了它kernel.php.在克隆存储库之后,当我尝试运行时PHP artisan migrate,我收到此错误.

  [Illuminate\Database\QueryException]                                                                                                              
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.dc_user_meta' doesn't exist (SQL: select * from `dc_user_met  
  a` where `meta_key` = usage_in_days)
Run Code Online (Sandbox Code Playgroud)

不仅php artisan migrate但我根本无法运行任何工匠命令!我不知道为什么PHP schedule每次尝试执行任何artisan命令时都会保持调用方法.

在这种情况下,我可以做的就是解决这个错误,schedule就像这样把掩盖覆盖在我的逻辑方法中.

if(Schema::hasTable('dc_user_meta')){
    // Code here
}
Run Code Online (Sandbox Code Playgroud)

但我不认为它在长期运行中是好的.什么是解决此错误的正确方法?


更新: 我刚尝试覆盖这样的命令,kernel.php但仍然没有成功!

if(Schema::hasTable('dc_user_meta')){
    $schedule->command('usage:update')->daily();
}
Run Code Online (Sandbox Code Playgroud)

更新: 我得到了解决方案.但我不认为这是问题的答案.它解决了我的问题,但我不认为这是标准的解决方案.我只是被Command登录所覆盖.

if(Schema::hasTable('dc_user_meta')){
    // Command Logic
}
Run Code Online (Sandbox Code Playgroud)

任何具体的答案,为什么Laravel 用每个命令调用schedule()artisan以及如果发生这样的事情,如何以标准方式解决错误!

php cron laravel laravel-5

11
推荐指数
1
解决办法
1021
查看次数

如何在Laravel中存储非php文件的模板?

我们可以在Laravel中PHP使用blade模板引擎存储模板文件.但是,我想在远程服务器上创建一个配置文件,每个服务器超过20-30行.

直到现在,我正在使用这个Perl.我曾经执行过用于在一个文件中转储内容的Perl文件,我曾经将变量作为参数传递.

现在,我想不使用它Perl.我尝试寻找解决方案但失败了.为了便于理解,这就是我要做的事情!

我想在远程服务器上创建以下配置文件(仅举例).

Example.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在这里,example.com并且www.example.com将在每一个配置文件有所不同.

现在,我想从laravel应用程序创建此文件到远程服务器.有什么办法可以存储这个配置文件的模板,可以编译并将文件放在远程服务器上吗?

我知道如何将此文件放在远程服务器上.我只是想知道存储模板的最佳方法,并在需要时自定义它.

php shell laravel

10
推荐指数
1
解决办法
280
查看次数

如何在laravel中执行多个后台进程?

首先,我了解队列,现在对队列有很好的经验.队列的问题是,它是一个队列.我想在后台一起执行多个函数或命令.队列将第二个命令或函数保留在队列中,并在第一个命令或函数执行完毕后执行!

例如,我有一个包含约3,000,000条记录的表,我想更快地处理它们.我能做的是将它们分成5个相等的块并完全执行5个命令,这样我就可以利用我的CPU以及处理数据5倍的速度.

那么,我怎么能用Laravel做到这一点?队列不会起作用,因为它们一个接一个地执行.如果你的想法是创建多个5个多个队列和主管来完成,那我认为这不是一个标准的方法.

关于在这种情况下可以做些什么的任何想法?

php supervisord laravel laravel-5

9
推荐指数
2
解决办法
2286
查看次数

如何在不等待一个结束执行的情况下执行多个工匠命令?

我有大量数据需要快速处理并充分利用我的服务器。所以,我创建了一个父工匠命令和一个子工匠命令

父工匠命令:从数据库中获取值,进行各种计算,将数据分成块并使用以下代码执行子工匠命令的多个实例。

foreach($arrayOfData as $chunk){ // $arrayOfData is an array of Chunks
    $this->call('process:data',[
        'data' => $chunk  // Chunk is an array containing data
    ]);

    $this->info('Chunk Processed');
}
Run Code Online (Sandbox Code Playgroud)

但它等待一个实例停止执行,这意味着它不会同时执行我想要的多个子工匠命令实例!我知道以这种方式调用它会等待子工匠命令的一个实例停止执行。有什么方法可以执行多个实例而child artisan command无需等待一个实例停止执行?

我已经搜索了不同的方法来做到这一点,我可以使用exec()类似的函数执行子工匠命令,但它也会返回一些我的代码将等待的退出代码。

通过一次只执行 2 个实例,我可以将处理数据所需的时间除以 2。我想一次执行 3 个实例!有没有办法做到这一点?

更多信息

子工匠命令:获取数据数组并对其进行处理。基本上,它更新数据库中给定数据的一些信息。

php laravel laravel-5 laravel-artisan

5
推荐指数
1
解决办法
2234
查看次数

如何在 Laravel 中动态重置数据库配置?

我正在尝试获取托管在多个服务器上的数据库的大小。例如,我在 上有 2 个数据库Server A,在 上有 3 个数据库Server B

我想从我的 Laravel 应用程序中获取所有这些数据库的大小。其实我知道怎么reset配置。这是我正在使用的代码,但它仅提供了第一个数据库的正确数据库大小。其他人得到的大小NULL不正确,因为我知道其中一个数据库的大小Server B0.6MB因为我在上面安装了 WordPress。

$databases = array();
foreach($servers as $server){
    // Setting Config
    Config::set('database.connections.mysqlClient.host',$server->ip);
    Config::set('database.connections.mysqlClient.password',$server->mysql_password);

    foreach($server->databases as $database){
        $database->size = DB::connection('mysqlClient')->select('SELECT Round(Sum(data_length + index_length) / 1024 / 1024, 1) "db_size"
            FROM   information_schema.tables 
            where table_schema = "'.$database->name.'";'
        )[0]->db_size;

        $databases[] = $database;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我已经在循环内配置了凭据,因此它应该更新mysqlClient每个服务器的凭据或配置。如果它更新配置,我应该获得所有数据库的正确大小,但情况并非如此。

该脚本没有抛出任何异常。我确信配置有问题。这是因为当我尝试获取特定服务器上所有数据库的大小时,我得到了完美的结果。

php mysql laravel laravel-5

4
推荐指数
1
解决办法
6572
查看次数

如何在Laravel 5.5中动态设置SSH密钥?

我正在管理多个服务器的网络,并希望使用SSH密钥连接服务器.我发现我们可以在Laravel的remote.php配置文件中给出SSH密钥的路径,如下所示:

.
.
'key' => '/path/to/ssh/key'
.
.
Run Code Online (Sandbox Code Playgroud)

但是,由于我想连接许多服务器,因此无法为所有服务器设置单个私钥,因为它不安全.所以,我唯一能想到的是动态设置SSH密钥.直到现在,我以前使用密码登录,我可以动态设置,Config::set();但我不知道如何动态设置SSH密钥.

我们也可以Config::set();在这种情况下使用,但是这样,我必须将所有SSH密钥存储在具有服务器标识的特定目录中.但是,我想在数据库中保存SSH密钥,因为它更稳定,更适合备份.

我还想过在连接到服务器之前用服务器的SSH密钥更新SSH密钥文件,但它会产生我不想要的开销,因为它会减慢连接速度,因为每次通过SSH连接远程服务器时它都会写入SSH密钥文件.

有什么办法可以将SSH密钥存储在数据库中并动态设置它吗?

php ssh laravel laravel-5.5

3
推荐指数
1
解决办法
769
查看次数

如何在自定义 URL 上运行 Laravel mix?

我正在创建一个需要在临时服务器上从一个点创建的应用程序。因为在本地创建它是不可能的,因为它具有网络中其他服务器必须访问的一些端点。

我在 Vue.js 和 Laravel 中创建了一个应用程序。在本地,我曾经运行过npm run hot,这样当我更改一些代码时就不必重新编译。但由于我必须继续在实时服务器上开发此应用程序,因此我想npm run hot在自定义域(例如staging.something.com而不是localhost:8080.

localhost:8080如果以某种方式合作,我不会遇到任何问题,但是当我npm run hot在实时服务器上运行时,这是我尝试访问 Web 应用程序时收到的错误。

GET http://localhost:8080//js/app.js net::ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)

我认为它应该显示我的服务器的 IP 地址而不是localhost. 我不知道这有什么问题,但它不起作用。

node.js npm laravel vue.js laravel-mix

3
推荐指数
1
解决办法
2649
查看次数

为什么laravel甚至在本地环境中重定向到https?

我正在使用Laravel 5.5版.我有一个需要域执行的应用程序.这就是为什么我在我的/etc/hosts文件中添加了以下条目,以便我可以使用dashboard.application.devapi.application.dev等域来打开我的应用程序.这是我的/etc/hosts文件的样子.

127.0.0.1   localhost
127.0.1.1   p01ymath
127.0.0.1   dashboard.application.dev
127.0.0.1   api.application.dev
Run Code Online (Sandbox Code Playgroud)

我正在使用我的应用程序,php artisan serve --port=80以便我可以使用简单的开发域名执行我的应用程序.是的,关闭了apache,nginx或在端口80上运行的任何其他服务器.

问题是,当我尝试打开dashboard.application.devapi.application.dev时,它会被重定向到https应用程序的版本.我一直在使用清除缓存php artisan cache:clearcomposer dump-autoloadphp artisan route:clearphp artisan optimize,但没有任何工程.

这是我的AppServiceProvider的样子.它表示如果应用程序不在本地环境中,则重定向到https版本.

public function boot()
{
    if (!App::environment('local')) {
        URL::forceScheme('https');
    }
}
Run Code Online (Sandbox Code Playgroud)

但我的应用程序是在本地环境中.我APP_ENV.env文件中的指令设置为local,这意味着应用程序不能将我重定向到https版本.我甚至试图在我的浏览器上清理缓存,并尝试在另一个我从不使用的浏览器中打开该应用程序.尽管如此,这个问题仍未得到解决.

有什么我做错了吗?

php laravel laravel-5

2
推荐指数
1
解决办法
775
查看次数

v-model 不会实时更新特定字段的值。具有相同数据类型的其他字段工作正常。怎么了?

我有一个特定的模型,其中有多个值可以通过网页上给出的表单进行更新。值如“数量”、“费率”、“金额”、“净费率”等。

问题是,我将这些值与我的输入绑定在一起v-model,它对除“净利率”字段之外的所有字段都非常完美!它不是实时更新值,但是当我更新字段中的某些值并在 Vue-devtools UI 上单击刷新时,它会更新!只要字段中的值发生变化,它就不会立即更新。而且,对于称为“net_rate”的特定字段!

我不知道这里发生了什么!这是我的代码,带有 id 的第一个字段discount_perc工作正常!当我更新此字段中的任何内容时,只要我在该字段中编辑值,它就会更新。但同样的事情并没有发生在这个net_rate领域。

<div class="inline-form-group col-sm-12 col-md-4 col-lg-1 text-right">
    <label for="discount_perc" style="color:teal;font-size:14px;">Dis %</label>
    <input type="text" ref="discount_perc" @keydown.enter="$refs.net_rate.focus()" @input="setAmount()" v-model="selectedItem.discount_perc" class="form-control text-right" />
</div>
<div class="inline-form-group col-sm-12 col-md-4 col-lg-1 text-right">
    <label for="net_rate" style="color:teal;font-size:14px;">Net rate</label>
    <input type="text" ref="net_rate" v-model="selectedItem.net_rate" @input="updateAmount()" @keydown.enter="addItem()" @keydown.tab="addItem()" class="form-control text-right" />
</div>
Run Code Online (Sandbox Code Playgroud)

这是我针对这两个字段的输入事件触发的方法。

setAmount: function () {
    var discount_percAmount = this.selectedItem.discount_perc?(this.selectedItem.discount_perc*this.selectedItem.price)/100:0;
    this.selectedItem.net_rate = this.selectedItem.price-discount_percAmount;

    if(this.selectedItem.size_breadth > 0 && this.selectedItem.size_length > 0){
        this.selectedItem.item_amt = this.selectedItem.net_rate*this.selectedItem.quantity*this.selectedItem.size_breadth*this.selectedItem.size_length;
    } else { …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuejs2

2
推荐指数
1
解决办法
4056
查看次数

如何在laravel中动态禁用和启用外键检查?

我正在尝试将旧表中的条目移动到具有更新架构的新表中。问题是,我必须将内容从具有旧配置的 10 个表移动到具有新配置的 10 个表。

我是在控制台命令的帮助下执行此操作的。当我添加新表并执行命令时,对于已经有数据的表,我收到重复条目错误,这很明显。

当我尝试使用时DB::connection('mysql_old')->table('users')->truncate();,它会抛出错误1701 Cannot truncate a table referenced in a foreign key constraint,这也很明显!

这是我将条目从旧表移动到新表的方式。

$entries = DB::connection('mysql_old')->table('users')->get();
DB::table('users')->truncate();
foreach($entries as $entry){
    $user = \App\User::create([
        'name' => $entry->name,
        'email' => $entry->email,
        'status' => $entry->status,
        'credits' => $entry->credits,
        'role' => $entry->user_role,
        'email_subscription' => $entry->email_subscription,
        'activation_key' => $entry->activation_key,
        'password' => $entry->password,
        'remember_token' => $entry->remember_token,
        'created_at' => $entry->created_at,
        'updated_at' => $entry->updated_at
    ]);
}
Run Code Online (Sandbox Code Playgroud)

唯一的解决方案是在截断之前禁用外键检查并在截断后再次启用它(我认为)。它是一个关系数据库,显而易见。那么,有没有更好的方法来完成这个任务呢?

我想尝试将条目从旧表移动到新表中,a relational way但在这种情况下是不可能的。

php artisan migrate:refresh每次执行命令时我都可以执行该命令。但这里有问题,有超过 25 个表,大约需要 20-30 …

php mysql laravel

1
推荐指数
2
解决办法
6428
查看次数

为什么 Twitter 时间轴没有根据 Vue.js 组件中的变量加载?

我正在尝试根据路线加载多个帐户的 twitter 时间线。例如,如果有人请求特定页面,则页面上会加载特定帐户的 Twitter 时间线。

我尝试使用一个名为的插件,vue-tweet-embed但它根本不起作用,所以,我尝试了旧方法。我widgets.js在我的主 HTML 文件中包含了 twitter ,并尝试使用静态代码包含时间轴,如下所示。

静态代码

<a class="twitter-timeline" href="https://twitter.com/Google?ref_src=twsrc%5Etfw">Tweets by Google</a>
Run Code Online (Sandbox Code Playgroud)

现在,我想根据变量显示多个帐户的 Twitter 时间线。我的变量是一个对象的属性,因此,这是我尝试使用的代码。请注意,上面给出的静态代码即使在 Vue 组件中也能工作。

动态代码

<a class="twitter-timeline" data-height="500px" v-if="isLoading===false" :href="'https://twitter.com/'+service.twitter_handle+'?ref_src=twsrc%5Etfw'"></a>
Run Code Online (Sandbox Code Playgroud)

但是动态的不起作用。我检查了检查元素,代码生成的标记非常好。但它什么也没显示。当代码是动态的时,它不会加载 Twitter 时间线。

这是生成的标记

<div class="card-body">
    <a data-height="500px" href="https://twitter.com/Google?ref_src=twsrc%5Etfw" class="twitter-timeline"></a>
</div>
Run Code Online (Sandbox Code Playgroud)

我不知道出了什么问题,自过去 3 小时以来一直在尝试解决此问题,但似乎没有任何效果。

javascript twitter vue.js vue-component vuejs2

1
推荐指数
1
解决办法
660
查看次数

如何解决VB6中的"编译错误:类型不匹配"错误?

似乎已经有一些答案,但我找不到适合我的问题的答案.

这是代码:

Private Sub Combo2_click()
Dim item_id, price As Integer
Dim item_name As String
If Combo2.Index Is 0 Then
    price = 30
ElseIf Combo2.Index Is 1 Then
    price = 40
ElseIf Combo2.Index Is 2 Then
    price = 50
ElseIf Combo2.Index Is 3 Then
    price = 60
Else
    price = 55
End If
End Sub
Run Code Online (Sandbox Code Playgroud)

我收到错误"编译错误:输入MisMatch"...我不知道为什么!它显示错误Private Sub COmbo2_click()...

vb6

0
推荐指数
1
解决办法
1001
查看次数

在c编程方面需要帮助

我对以下程序有疑问,我无法理解以下程序的输出:

#include<stdio.h>
#include<conio.h>
main()
{
    char c='1';
    clrscr();
    printf("%d",&c);
    getch();
}
Run Code Online (Sandbox Code Playgroud)

在我的编译器中,它打印"-11",我正在使用Turbo C++.我知道,如果我使用" c"而不是" &c"它将打印49因为它是一个ASCII数字'1'.但它为什么打印 - 11当我使用" &c"时.

c printf

-3
推荐指数
1
解决办法
120
查看次数