我有一个表被调用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以及如果发生这样的事情,如何以标准方式解决错误!
我们可以在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应用程序创建此文件到远程服务器.有什么办法可以存储这个配置文件的模板,可以编译并将文件放在远程服务器上吗?
我知道如何将此文件放在远程服务器上.我只是想知道存储模板的最佳方法,并在需要时自定义它.
首先,我了解队列,现在对队列有很好的经验.队列的问题是,它是一个队列.我想在后台一起执行多个函数或命令.队列将第二个命令或函数保留在队列中,并在第一个命令或函数执行完毕后执行!
例如,我有一个包含约3,000,000条记录的表,我想更快地处理它们.我能做的是将它们分成5个相等的块并完全执行5个命令,这样我就可以利用我的CPU以及处理数据5倍的速度.
那么,我怎么能用Laravel做到这一点?队列不会起作用,因为它们一个接一个地执行.如果你的想法是创建多个5个多个队列和主管来完成,那我认为这不是一个标准的方法.
关于在这种情况下可以做些什么的任何想法?
我有大量数据需要快速处理并充分利用我的服务器。所以,我创建了一个父工匠命令和一个子工匠命令。
父工匠命令:从数据库中获取值,进行各种计算,将数据分成块并使用以下代码执行子工匠命令的多个实例。
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 个实例!有没有办法做到这一点?
更多信息
子工匠命令:获取数据数组并对其进行处理。基本上,它更新数据库中给定数据的一些信息。
我正在尝试获取托管在多个服务器上的数据库的大小。例如,我在 上有 2 个数据库Server A,在 上有 3 个数据库Server B。
我想从我的 Laravel 应用程序中获取所有这些数据库的大小。其实我知道怎么reset配置。这是我正在使用的代码,但它仅提供了第一个数据库的正确数据库大小。其他人得到的大小NULL不正确,因为我知道其中一个数据库的大小Server B是0.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每个服务器的凭据或配置。如果它更新配置,我应该获得所有数据库的正确大小,但情况并非如此。
该脚本没有抛出任何异常。我确信配置有问题。这是因为当我尝试获取特定服务器上所有数据库的大小时,我得到了完美的结果。
我正在管理多个服务器的网络,并希望使用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密钥存储在数据库中并动态设置它吗?
我正在创建一个需要在临时服务器上从一个点创建的应用程序。因为在本地创建它是不可能的,因为它具有网络中其他服务器必须访问的一些端点。
我在 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. 我不知道这有什么问题,但它不起作用。
我正在使用Laravel 5.5版.我有一个需要域执行的应用程序.这就是为什么我在我的/etc/hosts文件中添加了以下条目,以便我可以使用dashboard.application.dev或api.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.dev或api.application.dev时,它会被重定向到https应用程序的版本.我一直在使用清除缓存php artisan cache:clear和composer dump-autoload和php artisan route:clear和php 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版本.我甚至试图在我的浏览器上清理缓存,并尝试在另一个我从不使用的浏览器中打开该应用程序.尽管如此,这个问题仍未得到解决.
有什么我做错了吗?
我有一个特定的模型,其中有多个值可以通过网页上给出的表单进行更新。值如“数量”、“费率”、“金额”、“净费率”等。
问题是,我将这些值与我的输入绑定在一起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) 我正在尝试将旧表中的条目移动到具有更新架构的新表中。问题是,我必须将内容从具有旧配置的 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 …
我正在尝试根据路线加载多个帐户的 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 小时以来一直在尝试解决此问题,但似乎没有任何效果。
似乎已经有一些答案,但我找不到适合我的问题的答案.
这是代码:
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()...
我对以下程序有疑问,我无法理解以下程序的输出:
#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"时.
laravel ×9
php ×8
laravel-5 ×5
vue.js ×3
javascript ×2
mysql ×2
vuejs2 ×2
c ×1
cron ×1
laravel-5.5 ×1
laravel-mix ×1
node.js ×1
npm ×1
printf ×1
shell ×1
ssh ×1
supervisord ×1
twitter ×1
vb6 ×1