小编Joh*_*lor的帖子

Mozilla Firefox 预取 rel="next"

Firefox 似乎预取在元标记中设置的任何内容,如下所示:

<link rel="next" href="http://domain.com/page/2">
Run Code Online (Sandbox Code Playgroud)

可以在此处阅读有关此内容的更多信息:http : //developer.mozilla.org/en-US/docs/Link_prefetching_FAQ

现在在我的网站上,当有多个页面用于评论时,我一直在使用 rel="next" 和 rel="previous",因为我认为这是很好的标记,可以用来帮助某些读者或搜索引擎机器人。

然而,我也一直试图跟踪用户阅读的最后一条评论是什么,但这并没有奏效(当你花了几个小时做一些简单的事情时,这是愚蠢的时间之一)。

基本上,例如,当用户读取第 2 页(共 3 页)时,我更新数据库以表示他们已读取第 2 页,但未读取第 3 页。但是,由于第 3 页被预取,该页的代码会运行,并且会触发 SQL 更新即使用户从未真正阅读过第 3 页,该页面也是如此。

所以我真的有几个问题:

  • 有没有办法在保持“下一个”和“上一个”标记的同时避免这种情况?或者更容易删除那些元标记?
  • 我应该了解并尝试处理任何其他形式的预取吗?
  • 是否有一种特殊的方法可以判断某些东西是否只是预取,例如特殊的请求标头?

firefox prefetch

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

自定义laravel迁移命令"[Illuminate\Database\Migrations\MigrationRepositoryInterface]不可实例化"

我正在尝试创建一个自定义laravel(5.2)迁移命令,该命令基本上与migrate:status它相同,只是它只列出了挂起的迁移而不是所有迁移.

要做到这一点,我只是简单地将其复制migrate:status到我的app/console目录中的另一个类中,并调整代码以满足我的需要.但是每当我尝试运行它时,我都会收到错误:

[Illuminate\Contracts\Container\BindingResolutionException]构建[App\Console\Commands\PendingMigrations,Illuminate\Database\Migrations\Migrator]时,目标[Illuminate\Database\Migrations\MigrationRepositoryInterface]无法实例化.

类本身和fire()方法的内容似乎并不重要,因为它没有那么远,它在__construct()方法中失败了.

<?php namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Database\Migrations\Migrator;

class PendingMigrations extends Command
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'migrate:pending';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Shows a list of pending migrations';

    /**
     * The migrator instance.
     *
     * @var \Illuminate\Database\Migrations\Migrator
     */
    protected $migrator;

    /**
     * Create a new migration rollback command instance. …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-5 artisan artisan-migrate laravel-5.2

5
推荐指数
2
解决办法
1027
查看次数

获取方括号的内容,避免嵌套括号

(第一次海报,谷歌的长期访客)

我正在尝试提取一些方括号的内容,但是我有一点麻烦.我已经让它适用于圆括号,如下所示,但我看不出它应该如何修改以适用于方括号.我本以为在这个例子中替换正方形的圆形反之亦然,但显然不行.

它需要忽略括号内的括号.所以它不会返回(11)但会返回(10(11)12).

$preg = '#\(((?>[^()]+)|(?R))*\)#x';
$str = '123(456)(789)(10(11)12)';

if(preg_match_all($preg, $str, $matches)) {
    $matches = $matches[0];
} else {
    $matches = array();
}

echo '<pre>'.print_r($matches,true).'</pre>';

This returns:

Array (
    [0] => (456)
    [1] => (789)
    [2] => (10(11)12)
)
Run Code Online (Sandbox Code Playgroud)

哪个是完美的.但是,如何才能使用方括号代替字符串,例如:

$str = '123[456][789][10[11]12]'; 
Run Code Online (Sandbox Code Playgroud)

php regex recursion parentheses preg-match

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

简单的mysql选择查询允许的内存大小超过256mb

编辑:对于在以后发现这种情况的任何人,CI会在这些情况下使用大量内存,因为它会为每一行创建一个对象(使用result_array()似乎没有好多了),所以最好的选择就是使用PHP内置的mysql函数.如果您正在使用MYSQLI,则可以访问连接链接,如下所示:

$this->db->conn_id
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过命令行运行脚本(测试什么是cronjob),脚本的作用是无关紧要的,因为它在第一次选择时失败并且没有进一步.

我正在使用Codeigniter 2.0.3.

我的表看起来像这样:

CREATE TABLE IF NOT EXISTS `graphic_files` (
  `graphic_file_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `graphic_file_style_id` tinyint(2) unsigned NOT NULL,
  `graphic_file_fm_id` bigint(20) unsigned DEFAULT NULL,
  `graphic_file_config_line` varchar(255) NOT NULL,
  `graphic_file_config_line_hash` varchar(32) NOT NULL,
  `graphic_file_location` varchar(255) DEFAULT NULL,
  `graphic_file_pack_id` int(10) unsigned NOT NULL,
  `graphic_file_enabled` tinyint(1) NOT NULL,
  `graphic_file_alternative` tinyint(1) NOT NULL,
  `graphic_file_version` decimal(4,2) NOT NULL,
  `graphic_file_time_added` int(11) unsigned NOT NULL,
  `graphic_file_time_modified` int(11) unsigned NOT NULL,
  `graphic_file_size` int(11) unsigned NOT NULL,
  PRIMARY KEY (`graphic_file_id`),
  KEY `graphic_file_style_id` (`graphic_file_style_id`),
  KEY …
Run Code Online (Sandbox Code Playgroud)

php mysql codeigniter

3
推荐指数
2
解决办法
3040
查看次数

将 utf-8 数据库转换为 utf8mb4 时出现重复条目​​错误

我正在尝试将数据库转换为使用 utf8mb4 而不是 utf8。除了一张桌子之外,一切都很顺利:

\n
CREATE TABLE `search_terms` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `search_term` varchar(128) NOT NULL,\n  `time_added` timestamp NULL DEFAULT NULL,\n  `count` int(10) unsigned NOT NULL DEFAULT '0',\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `search_term` (`search_term`),\n  KEY `search_term_count` (`count`)\n) ENGINE=InnoDB AUTO_INCREMENT=198981 DEFAULT CHARSET=utf8;\n
Run Code Online (Sandbox Code Playgroud)\n

基本上,它所做的就是每次有人在表单中搜索某些内容时保存一个条目,以便我们可以跟踪搜索次数,非常简单。

\n

有一个唯一索引,search_term因为我们希望每个搜索词只有一行,而不是增加计数值。

\n

但是,当转换为 utf8mb4 时,我收到重复输入错误。这是我正在运行的命令:

\n
ALTER TABLE `search_terms` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n
Run Code Online (Sandbox Code Playgroud)\n

在数据库中我可以看到类似这样的各种示例:

\n
\n

\xef\xbd\x86\xef\xbd\x8d\xef\xbc\x92\xef\xbc\x90\xef\xbc\x91\xef\xbc\x92

\n

\xef\xbd\x86\xef\xbd\x8d2012

\n

调频2012

\n
\n

在当前的 utf8 字符集中,这些都被视为唯一并存在于数据库中,而不会出现search_term …

php mysql utf-8 unique-index utf8mb4

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

MySQL JSON:如何从键值查找对象

我正在尝试找到一种方法来搜索 JSON 对象并获取特定的键,但搜索另一个键。

这是一个示例架构:

CREATE TABLE `fields` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `label` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `options` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `fields` (label, options) VALUES
(
  'My Field', 
  '[{"text": "Grass", "value": "1"}, {"text": "Synthetic (New Type - Soft)", "value": "2"}, {"text": "Synthetic  (Old Type - Hard)", "value": "3"}, {"text": "Gravel", "value": "5"}, {"text": "Clay", "value": "6"}, {"text": "Sand", "value": "7"}, {"text": "Grass/Synthetic Mix", "value": "8"}]'
);
Run Code Online (Sandbox Code Playgroud)

数据库小提琴: …

mysql json mysql-json

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

限制亚马逊AWS Cloudfront

我最近设置了一个利用Amazon Cloudfront分发非常大的文件的新网站,但亚马逊目前向我的服务器发出了如此多的请求,以至于我的整个网站都停滞不前.

我应该注意,我没有使用S3,cloudfront直接连接到我的服务器.

我有一个100mb的数据连接,我正在尝试分发的文件是两个3GB文件.但是,如果我在ssh中运行iftop,则Amazon ip地址似乎会占用每一行,可能会尝试将同一文件缓存到多个不同的服务器,并且它们似乎正在耗尽我的整个连接.

无论如何将云端限制为10mb或更低的连接?

amazon-web-services amazon-cloudfront

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

没有缓存头的 Laravel 重定向

我正在使用 Laravel 3,除了 through 之外,如何以任何方式设置标题并不明显Response::make()

我正在做这样的重定向:

return Redirect::to('admin/check');
Run Code Online (Sandbox Code Playgroud)

我想no-cache为重定向设置一个额外的标头,如下所示:

"Cache-Control: no-store, no-cache, must-revalidate"
Run Code Online (Sandbox Code Playgroud)

我意识到我可以直接在 PHP 中执行此操作,但是有没有办法通过 Laravel 设置响应标头?

php redirect http laravel laravel-3

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

VueJS - 一长串 v-if 的最佳替代方案是什么

我需要制作一个动态表单,其中管理区域允许某人在表单中添加和重新排列字段。每个字段都有一个类型:日期、复选框、选择、文本、数字等。我为每个字段类型创建了单独的组件,但现在我的表单看起来像这样(给出示例的伪代码)。

<section v-for="field in fields">
    <field-date v-if="field.type === 'date'" v-model="field.value"></field-date>
    <field-select v-if="field.type === 'select'" v-model="field.value"></field-select>
    <field-number v-if="field.type === 'number'" v-model="field.value"></field-number>
    <field-text v-if="field.type === 'text'" v-model="field.value"></field-text>
    <field-checkbox v-if="field.type === 'checkbox'" v-model="field.value"></field-checkbox>
</section>
Run Code Online (Sandbox Code Playgroud)

但这已经变得难以控制,而且只会变得更加失控。但我找不到更简单的方法来做到这一点。也许 field 应该是一个带有 render 方法的对象?但这样的话 if/else 就会被抽象到别处。

forms dynamic-forms vue.js vue-component vuejs2

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